티스토리 뷰

Wargame/Webhacking.kr

Challenge 59

do9dark 2015. 9. 10. 03:30

소스와 함께 JOIN, LOGIN을 할 수 있는 테이블을 볼 수 있다.



소스를 눌러서 내용을 보면 위에 있는 코드는 LOGIN 부분이고 아래 부분은 JOIN 부분인 것을 알 수 있다.



- LOGIN 부분

($_POST[lid] && $_POST[lphone])

두 값이 전송되면 c59 테이블에서 해당 값이 있는 지 조회를 하고 조회한 아이디가 admin이면 문제를 해결할 수 있다.


- JOIN 부분

($_POST[id] && $_POST[phone])

두 값이 전송되면 여러 검증을 거치게 된다. 

phone은 20글자가 넘으면 접근이 제한되고 admin|0x|#|hex|char|ascii|ord|from|select|union가 있을 경우에도 접근이 제한된다.

id는 admin이라는 문자가 올 수 없다.


insert into c59 values('$_POST[id]',$_POST[phone],'guest')

삽입되는 Query를 보면 id는 '(single-quote)로 감싸져있지만 phone은 그렇지 않은 것을 볼 수 있다.

'(single-quote)를 입력하여 우회를 해보았지만 실패

즉, phone 부분에 20자가 넘지 않도록 id가 admin인 값을 삽입을 해야한다.


이를 우회하기 위해서 reverse() 함수를 이용할 수 있다.

id에는 nimda를 입력하고 phone 부분에는 reverse(id)를 하면 입력한 id 값을 참조하여 nimda 값을 역으로 가져올 수 있다.



- JOIN 부분

id=nimda

phone=1,reverse(id)),(1,1


- LOGIN 부분

id=nimda

phone=1


위와 같이 가입하고 로그인하면 문제를 풀 수 있다.



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

*** All Clear ***  (0) 2015.09.10
Challenge 61  (0) 2015.09.10
Challenge 60  (0) 2015.09.10
Challenge 58  (0) 2015.09.09
Challenge 57  (0) 2015.09.08
Challenge 56  (0) 2015.09.07
Challenge 55  (0) 2015.09.06
Challenge 54  (0) 2015.09.06
Challenge 53  (0) 2015.09.06
Challenge 52  (0) 2015.09.06
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
링크
공지사항
Total
Today
Yesterday