200점짜리 문제다. 주제에 10단계까지 가야 clear가능하다. 전반적으로 php코드 해석, get, post, cookie에 대해 물어보는 문제였다.


1.


if $_get[get] == "hehe" 일때 next를 echo하기 때문에 url에 get=hehe 를 붙여주면 clear




2.


if $_POST[post]=hehe && $_POST[post]=hehe2이면 next이다 이번엔은 앞에 스테이지와 다르게 포스트 방식으로 인자를 전달해야하므로 위와 같이 간단한 스크립트를 이용한다.



3.


REMOTE_ADDR 사용자가 현재 페이지를 보고 있는 시스템의 IP 주소인 본인의 ip주소를 myip로 넘기면 된다.





4.

현재시각을 나타내는 time()값을 md5로 암호화한 값과 get으로 받은 password의 값과 비교해서 같을 경우 클리어인데 미리 몇 초 뒤의 값을 넣고 암호화하여 새로고침을 몇번 눌러주다 보면 값이 일치해서 쉽게 문제를 풀 수 있다.



5.


get방식의 imget변수와 post방식의 impost변수 그리고 cookie에 포함된 imcookie값에 아무값이나 넣어줘서 문제를 풀어주면 된다.

if가 참이면 클리어



6.


user-agent와 ip주소를 md5 암호화 하여 넣어주는데 중요한점은 post방식으로 data를 보낼때는 url인코딩을 거쳐 보내야 한다는 점이다.



7.

if($_GET[$_SERVER[REMOTE_ADDR]]=$_SERVER[REMOTE_ADDR]) 값을 보면 알 수 있듯이 나의 IP주소에서 . <=을 뺀 값을 변수명으로 하고 동시에 그값을 변수에 넣어주면 조건문에 성립하게 된다.



8.

설명생략



9.

php문을 보면 for문을 돌리는데 i=97부터 2씩 증가하여 122까지 돌린다. $ch=에 $i의 캐릭터값을 넣고 answer변수에 한글자씩 붙여서 문자열을 만들어준다. 그러면 answer="acegikmoqsuwy"가 될것이다.



10.

ip주소를 $ip변수에 넣고 len($ip)번 for문을 실행한다. str_replace함수를 사용해서 $i 값을 모두 ord($i)로 치환한다.

두번째 str_replace는 . <-을 없애주는 기능을 하고 

substr($ip,0,10)을 해서 문자열을 잘라서 저장하는 기능을한다.

php문을 온라인에서 test할 수 있는 사이트를 이용해서 ip와 answer값을 알아보고


 <-- 형식에 맞춰서 url에 입력해주면 password가 출력된다.

이렇게 하면 33번의 문제가 모두 풀린다.




'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 59번  (0) 2018.04.26
Webhacking.kr 42번  (0) 2018.04.26
Webhacking.kr 32번  (0) 2018.04.17
Webhacking.kr 23번  (0) 2018.04.17
Webhacking.kr 20번  (0) 2018.04.17


32번 문제는 rank, name, hit이 순위대로 표시되어 있는데 name은 나와 같이 웹해킹 공부를 하는 사용자들의 닉네임 같았다. 

100을 채워야 clear하는 삘이다.

맨 아래까지 내려보니 join이라는 버튼이 있었다. 누르니 vote=add를 get방식으로 url에 담아 보내고 있었다.




이제 나도 100을 찍어야하는데 닉네임에 커서를 가져가서 클릭버튼을 누르면




위와 같이 역시 hit=oiehso0을 보내는 것을 알 수 있다.

그렇지만 한번만 유효했고 다음 클릭부터는 no라는 메세지 박스만 뜰뿐이었다.

그래서 체크하는 값이 있나? 생각하며 개발자 도구로 살펴본 결과


위와 같이 vote_check=ok와 같은 쿠키값이 있다는 것을 알게 되었고

파라미터 변조를 통해 ok값을 지운후 100번 쿼리를 날려줬다.



130번이나 해버렸다.



'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 42번  (0) 2018.04.26
Webhacking.kr 33번  (0) 2018.04.25
Webhacking.kr 23번  (0) 2018.04.17
Webhacking.kr 20번  (0) 2018.04.17
Webhacking.kr 58번  (0) 2018.04.16



input을 get방식으로 code라는 변수에 받는다. 10번 라인과 같이 그 값이 html코드 상으로 들어가게 되는데

특수문자는 여러개를 연속으로 입력해도 필터링 되지 않지만, 일반 문자는 두개 이상 연속으로 입력하면

no hack이라는 문구와 함께 필터링 되는것을 알 수 있다.





이러한 필터링을 우회하기 위해 여러 공백을 나타내는 문자를 넣어봤지만 아래와 같이 들어갔다.




Null값을 나타내는 %00을 문자 사이에 넣어주었다.

문제가 풀렸는데

 php에서는 Null을 만나게 되면 문자열의 마지막으로 인식을 하기 때문에 문자열 필터를 우회하면서 

html에서는 \u0이 무시되어 표시되는 듯 하다.





'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 33번  (0) 2018.04.25
Webhacking.kr 32번  (0) 2018.04.17
Webhacking.kr 20번  (0) 2018.04.17
Webhacking.kr 58번  (0) 2018.04.16
Webhacking.kr 24번  (0) 2018.04.13


20번문제를 보면 javascript challenge라며 프로그래밍 하지말라고 한다.

우선 소스코드를 개발자도구로 본다. 그리고 nickname, comment, code에 아무값을 넣어보기로 한다.


fucntion ck()내부를 보면 id.value가 없으면 nickname 입력창에 focus가 되고 이하 마찬가지로

comment 입력창과 code 입력창에 어떠한 값이 존재해야만 다음 최종 조건문에 진입 할 수 있었다.



ck()함수의 조건문을 다 충족하고 여러값을 submit 해봤지만 문제가 풀리지않았다. 

  <-- 시간제한이 2라는 문구를 다시 보게 되면서 

개발자 도구의 console을 이용해서 2초내로 아래 메모장에 있는 코드를 실행해주면 성공



'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 32번  (0) 2018.04.17
Webhacking.kr 23번  (0) 2018.04.17
Webhacking.kr 58번  (0) 2018.04.16
Webhacking.kr 24번  (0) 2018.04.13
Webhacking.kr 14,17번  (0) 2018.04.13


패스워드를 입력할 수 있는 창과 login버튼이 있고 올바른 pw를 입력하지 않으면 wrong이라는 문자열로 창이 채워진다.

아래와 같이 소스를 보면  kk.js 스크립트가 실행되고 스크립트 내부를 보면 



kk.js에 kk라는 변수에 document.URL을 담고 kk.substr(10,4)를 통해 URL의 특정 문자열을 잘라 kk에 다시 저장한다.

여기서 substr(10,4)라고 하면 http://webhacking.kr/ 부분이다. 



kk.js는 <script src=kk2.js></script>를 출력하고



kk2.js는 hackme.swf를 src로 담는다. 결국 hack.swf가 페이지에서 실행 되는데,

swf는 어도비에서 개발한 디지털 비디오 파일이기 때문에 password에 대한 힌트가 파일 내부에 있을 것이라고 생각했다,



확장자를 바꿔서 txt로 열어봤는데 우리가 유일하게 읽을 수 있는 문자를 발견했다. passw0rd.php라는 단서로 보아 그대로 복사해서 url창에 붙여보니 clear




'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 23번  (0) 2018.04.17
Webhacking.kr 20번  (0) 2018.04.17
Webhacking.kr 24번  (0) 2018.04.13
Webhacking.kr 14,17번  (0) 2018.04.13
Webhacking.kr 16번  (0) 2018.04.12


24번 문제를 클릭하면 client ip인 나의 외부 ip와 agent가 표시되면서 wrong IP!라는 문구가 출력된다. 소스를 보니 

역시나 index.phps와 같은 주석이 있었고 코드를 볼 수 있었다.



extract()함수는 배열 속의 키값을 변수화 시켜주는 함수이다. $a[x] = 111; $a[y] = 222; 에서 extract(a) 할 경우 x = 111, y = 222가 되는 것

내가 보내는 request 쿠키의 REMOTE_ADDR 값을 받아와서 조건문에 조건을 만족시키면 solve다.

str_replace함수가 12 / 7. / 0. 문자열에 걸려있기 때문에 1(12)2 7(7.). 0(0.). 1  과 같이 우회하면 된다.


프록시툴 대신 간단한 스크립트로 해결 가능하다.



'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 20번  (0) 2018.04.17
Webhacking.kr 58번  (0) 2018.04.16
Webhacking.kr 14,17번  (0) 2018.04.13
Webhacking.kr 16번  (0) 2018.04.12
Webhacking.kr 26번  (0) 2018.04.12


크롬 브라우저 개발자 콘솔을 이용해서 디버깅을 체험해보는 문제였다. 17라인에 bp를 걸고 ul == pw.input_pwd.value를하는데 값을 보면 된다.




스크립트 소스를 보면 sub()함수에 login.pw.value 값이 unlock과 같으면 unlock/10이 패스워드로 출력된다. 굳이 실행을 안시켜도 ..




'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 58번  (0) 2018.04.16
Webhacking.kr 24번  (0) 2018.04.13
Webhacking.kr 16번  (0) 2018.04.12
Webhacking.kr 26번  (0) 2018.04.12
Webhacking.kr 27번  (0) 2018.04.12




event.KeyCode 값을 cd로 받는 mv함수를 만들었는데 cd값이 124이면 password가 출력되게 짜여져있다.

키코드 값을 참고한다.

키보드로  | <<--이문자를 입력하면 끝!


'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 24번  (0) 2018.04.13
Webhacking.kr 14,17번  (0) 2018.04.13
Webhacking.kr 26번  (0) 2018.04.12
Webhacking.kr 27번  (0) 2018.04.12
Webhacking.kr 47번  (0) 2018.04.11


eregi는 admin이라는 문자열을 필터링하는데 결국 문제를 해결하려면 id == "admin"이여야 한다. 



브라우저는 url을 넘길때 자동 url decode하기 때문에 필터링에서 걸리게 된다. 

그렇지만 바로 아랫줄에 코드상 임의로 urldecode를 한번 더하는 것을 알 수 있다. 

admin의 urlencode를 두번 해주고 값을 넣어주면 필터링에 안걸리면서 두번째 if문을 만족 시킬 수 있다.



'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 14,17번  (0) 2018.04.13
Webhacking.kr 16번  (0) 2018.04.12
Webhacking.kr 27번  (0) 2018.04.12
Webhacking.kr 47번  (0) 2018.04.11
Webhacking.kr 25번  (0) 2018.04.11


SQL Injection문제이다. 

# / union / from / challenge / select / ( / 수평 탭 / "/" / limit / = / 0x <<--모두 필터링 된다. 

쿼리문에 no=($_GET[no]) <<== 처럼 괄호로 묶어있기 때문에 sql injection을 할때 괄호를 안 맞춰서 에러가 나는 일은 없게 해야한다.

또한 =이 필터링 되기 때문에 = 대신에 like 와 같은 문법을 사용한다.

그리고  #이 필터링 되기 때문에 " -- " < 이와같은 방식을 이용해서 뒷 부분을 주석처리 해준다.


guest의 no는 1 이었고, admin의 no는 1과 가까울 것이라고 생각했다.


url창에 no=0%29%20or%20no%20like%202%20--%20을 입력해서 풀거나 


입력창에 0) or no like 2 -- 를 직접 입력해 푼다.




select id from challenge27_table where id='guest' and no=(0) or no like 2 -- (주석처리) )  <<-- 가 될 것이다.

'Web Hacking > Webhacking.kr' 카테고리의 다른 글

Webhacking.kr 16번  (0) 2018.04.12
Webhacking.kr 26번  (0) 2018.04.12
Webhacking.kr 47번  (0) 2018.04.11
Webhacking.kr 25번  (0) 2018.04.11
Webhacking.kr 18번  (0) 2018.04.11

+ Recent posts