WEB/webhacking.kr (old)

webhacking.kr 59번

hongjw 2020. 2. 18. 23:35

challenge 59 첫화면

역시 view-source 먼저 보기 ㅎㅅㅎ

코드를 해석해보면, $_POST['lid']와 $_POST['lphone']을 입력받고 이 값들을 select문의 id,phone칼럼의 값으로 쓴다.

이 때, $result['lv']이 admin이면 문제가 해결된다.

$_POST['id']와 $_POST['phone']도 입력을 받는데, $_POST['phone']의 길이는 20을 넘으면 안된다. 

$_POST['id']에는 admin이 포함되면 안되고, $_POST['phone']에는 admin, 0x, hex, char, ascii, ord, select가 포함되면 안된다. ( Access Denied 출력 )

$_POST['id']와 $_POST['phone']은 insert문의 value에 삽입된다.

 

먼저 ID와 PHONE에 값을 입력하고 제출을 누르면, JOIN에 입력한 값들이 $_POST['id'], $_POST['phone']라는 것을 알 수 있다.

( LOGIN에 입력한 ID와 PHONE값이 $_POST['lid']와 $_POST['lphone']값이 된다. )

 

id를 hong로 입력하고 JOIN한 후, LOGIN했더니 lv : guest라고 떴다.

insert into chall59 values('{$_POST['id']}',{$_POST['phone']},'guest')이 insert into chall59 values('hong',1234,'guest')로 실행된 것이다. 

이를 통해 values의 세번째 'guest'값이 lv라는 것을 알 수 있다.

 

우리는 lv의 값을 admin으로 변경해야하기 때문에 insert문을 insert into chall59 values('{$_POST['id']}',{$_POST['phone']},'admin')으로 바꿔줘야 한다.

그 전에, ' 가 먹히는지 확인해보기 위해 ID=a, PHONE=1,1) -- 를 입력해보았다. ( addslashes함수 때문에 )

그리고 ID=a, PHONE=1을 입력하고 LOGIN했더니 lv가 1로 출력되었다.

이를 통해 '로 우회가능하다는 것을 알게되었고, lv를 admin으로 만들기 위해서는 1,1) -- 대신 1,admin) -- 을 입력하면 될것같지만!! 우린 admin을 입력할 수 없다. ¯ࡇ¯

 

그러므로 나는 reverse함수를 이용해 문제를 풀었다.

ID=nimda, PHONE=1, reverse(id)) -- 로 입력한 후,

ID=nimda, PHONE=1 로 로그인하면

문제 해결 ㅎㅅㅎ ~~!~!!

'WEB > webhacking.kr (old)' 카테고리의 다른 글

webhacking.kr 4번  (0) 2020.02.23
webhacking.kr 61번  (0) 2020.02.19
webhacking.kr 58번  (0) 2020.02.18
webhacking.kr 56번  (0) 2020.02.17
webhacking.kr 54번  (0) 2020.02.16