본문 바로가기

Webhacking/Webhacking.kr

(19)
[Webhacking.kr] old-20번 문제 풀이 20번 풀이도 가즈아 맨 위에 time limit이 있고, 캡챠가 있고... submit이 있다... 일단 다 입력해서 submit을 눌러보았다. (무엇을 보는거지? 그건 내 잔상이라구...) 느리댄다... 느낌이 팍 온다. 캡챠를 넣어놓은 것으로 보아, 닉네임/코멘트/캡차를 완벽하게 입력하여 submit을 2초안에 해야 풀리는 문제이다. 문제를 푸는 방법은 2가지 정도가 있을것 같다. python urllib 또는 request 또는 selenium 모듈을 사용하여, Response내 captcha를 파싱하여 자동으로 Request에 넣어 보내기 프록시 툴을 이용하여 응답 코드 내 html 코드를 수정하여 자동으로 Request를 정상적으로 보내게 만들기 첫번째 방법은 너무 쉬우니, 두번째 방법을 설명..
[Webhacking.kr] old-19번 문제 풀이 19번 풀이 가즈아 역시나 별게 없다. id에 기본적으로 admin이 들어가 있고 제출버튼이 있다. 눌러보니, you are not admin 이 나타난다. 문제를 나름 많이 풀어보면서 느낀점은, 이런식으로 you are not admin이라고 뜬다는 건... admin으로 어떻게든 성공시키라는 얘기가 된다. admin이 안되니까 우선 a를 넣어봤다. a로는 로그인이 된다. 근데 javascript도 따로없고, SQLI도 안되는것 같고... 무슨 문제인가 고민을 하다가, 쿠키를 확인해보니... userid가 쿠키에 들어가있다. (딱봐도 문제풀이에 100퍼센트 연관이 되어있음을 알 수 있다) 다만 그 값이 base64로 인코딩 되어있는것 같았다. base64로 디코딩해보니, 32byte의 문자열이 나타났다..
[Webhacking.kr] old-18번 문제 풀이 18번 문제를 풀어보자 JS 문제에서 탈출했다. 간만에 보는 SQLI 문제다. 코드를 보지말고 풀까 했지만, 삽질 시간만 늘어날것 같아 코드를 봤다. 크게보면 hex랑 공백정도를 막아둔것 같다. 공백을 ||, &&로 우회하지 못하도록 처리도 해뒀다. 우회는 너무 간단하다. 공백대신 Line Feed(%0a)를 넣어주면 된다. 123123%0aor%0aid='admin' 이렇게 payload짜서 URI에 get방식으로 전달해주면 된다. 풀렸다. 사실 코드보면 admin의 no가 2인것도 나와있는데, 그 정보는 굳이 없어도 풀 수 있는 문제였다. 100점짜리 SQLI이기에 난이도가 상당히 낮았다.
[Webhacking.kr] old-17번 문제 풀이 일이 너무 바빠서 풀이를 오래 쉬었다. old-17번 부터 다시 풀이 드루가자 별거없다. 그냥 입력창과 체크다. 문제번호가 js-4이니, javascript 문제일 것이다. 코드를 보자 form 태그 내 check 버튼을 누르게되면 sub함수를 실행시킴을 확인할 수 있다. script 내 코드를 보니 sub함수를 확인할 수 있었다. 내용은 간단하다. unlock 변수의 값과 동일한 데이터를 input에 넣고 check 버튼을 눌리면 풀린다. 다만 unlock 변수가 복잡한 사칙연산으로 이루어져 있다. 이걸 굳이 우리가 풀 필요는 없다. 이런건 개발자도구 console에게 맡기자. unlock이 7809297.1임을 확인했다. 찾은 데이터를 입력하고 check버튼을 클릭하면 풀었다. JS문제의 경우 대부분..
[Webhacking.kr] old-16번 문제 풀이 16번 문제는 이렇게 별이랑 점 두개가 덩그러니 놓여있다. 아무것도 없는것을 보아하니 Javascript 문제로 추정된다. 코드를 보니 역시나 Javascript 문제였다. 뭐가 굉장히 많은데 사실 mv 함수 내 마지막 if문의 조건에 맞는다면 문제가 풀린다는 점이 중요하다. (코드가 굉장히 길지만 다른건 해석할 필요도 없는 문제다) 그렇다면 어디서 mv함수를 호출하는지 봤더니... body 태그에 onkeypress 속성으로 들어가 있었고, mv함수의 인자값은 사용자가 입력한 키보드의 ascii code값이 전달된다. 그렇다면 사실 이 문제는 고민할 것이 없다. 마지막 if문은 cd가 124면 성립한다. 즉 ascii code 124에 해당하는 값을 키보드로 입력하면 문제가 풀릴것이다. ascii co..
[Webhacking.kr] old-15번 문제 풀이 15번은 문제가 이게 전부다. 들어가자 마자 Access_Denied라고 한다. alert일테니, javascript 문제라고 판단했다. URI는 저렇게 되어있었고, 들어가자마자 Javascript가 실행되기 때문에 디버깅을 시도했다. 요렇게 개발자 도구에서 디버깅을 킨 상태에서 문제 URI로 접근을 시도했다. script구문이 나왔고, alert다음에는 location.href가 있어, 실제 Flag인 document.write를 보지 못하는 문제였다. 여기서 풀이방법은 4가지가 있다. Javascript를 브라우저 설정에서 꺼버린 뒤, 접근한다. Proxy를 설정하여 response body 내 js코드를 수정한다. 개발자도구를 이용한 디버깅을 통해 알아낸 flag를 직접 접근한다. (야매)팝업창에서..
[Webhacking.kr] old-14번 문제 풀이 14번 문제는 100점짜리 쉬운문제다. 일단 저렇게 무언가를 check하는 부분이 있다. 코드를 보자 코드를 보니 check 버튼을 누르면 ck함수가 onclick attribute로 인해 실행되는 구조이다. ck 함수를 확인해보니... URI에서 .kr의 위치에 30을 곱한값을 input_pwd에 넣고 check 버튼을 누르면 입력한 값의 제곱이 된 값이 ? 뒤에 붙어 이동되는 구조이다. 풀이방법은 두가지가 있다. if문 조건에 맞는 값을 알아내, input에 넣고 check 버튼을 누른다. if문 조건에 맞는 값을 알아내 제곱하여 ?뒤에 붙여 직접 접근한다. 사실 값을 구하는건 어렵지 않다. console에 직접 코드를 실행시켜봄으로써 값이 540이라는 것을 쉽게 알 수 있다. 첫번째 풀이방법대로 5..
[Webhacking.kr] old-12번 문제 풀이 대놓고 javascript challenge라고 한다. javascript 문제가 틀림없으니 개발자 도구를 열어보자 와 욕나올 뻔했다 ㅎㅎ 열심히 난독화 해둔 이 javascript는 대체 무슨 내용일까... 우선 보기가 너무 힘드니, javascript 내용을 복사하여 beautify 해보았다. 총 22줄의 코드가 나왔다. beautify를 하면 보기 편할것이라는 나의 생각은 틀렸다... 일단 해당 코드를 분석해보기 위해, 개발자도구 console에 입력하여 실행시켜 보았다. 결과는 undefined... undefined란 정의되지 않았다... 이 결과를 통해 지금 실행한 구문이 무언가 함수를 실행한다는 것을 알 수 있었다. 그래서 코드를 찬찬히 보던 와중, 맨 마지막에 ('_'); 요부분이 눈에 띄..