티스토리 뷰
소스와 함께 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 |