-
[Webhacking.kr] Challenge 8Security/Wargame 2014. 6. 10. 17:42336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
요 몇일째 웹해킹에 재미들려서 webhacking.kr 을 열심히 풀어헤치는중
다른 문제들도 풀이를 하나씩 써 나갈거지만 8번 문제를 풀다가 풀이가 쓰고 싶어서 먼저 써본다.
8번문제 링크에 접근하게 되면
이와 같은 화면을 보게 된다.
일단 문제를 풀기 위해 소스를 한번 살펴보자
/index.phps
로 접하게되면 다음과 같은 소스를 볼 수 있다.
문제를 solve 하기 위해선 'lv0' 테이블의 id가 admin 이어야 solved 된다.
이 id를 구해오기 위해서 'HTTP_USER_AGENT' 를 where문으로 찾는다.
그리고, 해당 'HTTP_USER_AGENT'의 대한 데이터가 없으면, 새로운 'guest' ID의 데이터를 추가하게 된다.
즉 우리가 해야 하는건, admin 이란 id를 가진 agent 를 추가해야하는데,
우리는 agent 값을 조작해서, insert 구문에 SQL Injection 을 행하는 방법이다.
우리가 먼저 알아야 할 것이 있는데,
Insert 문은 한번에 하나의 데이터만 삽입해야하는 것이 아니다.
다시 말해, insert는 여러개의 데이터를 한번에 삽입할 수 있다.
위의 예제를 보면, VALUES 에 여러개의 괄호로 여러개의 데이터가 삽입 가능하다.
즉 우리는 이 문제를 해결하기 위해서
첫번째 데이터에 임의로 데이터를 넣어주고,
두번째 데이터는 서버사이드스크립트에 의해 삽입되도록 두번
2개의 데이터가 삽입될 것이고.
해당 문제는 1번 Index 의 값을 가져와 체크하기 때문에
우리가 넣은 첫번째 데이터를 검사하게 될 것이다.
그렇게 되면 우리가 첫번째로 넣음 admin 데이터에 의해서
문제가 해결될 것이다.
그럼 실제로 문제를 풀어보자
'HTTP_USER_AGENT'를 조작하기 위해서는 HTTP REQUEST를 수정할 수 있어야 하는데.
이는 HTTP REQUEST 툴이나, 파로스 또는 직접 코딩을 하여 조작하면 되겠다.
필자는 Python 을 통해 코드를 작성하여 문제를 해결 하였다.
위와 같이 UserAgent 를 통해 SQL Injection 을 수행한다면해당 문제를 풀이하는 결과를 볼 수 있다.'Security > Wargame' 카테고리의 다른 글
[Webhacking.kr] Challenge 2 (6) 2014.06.17 [Webhacking.kr] Challenge 1 (3) 2014.06.13 [ftz.hackerschool.org] Level 1 (1) 2012.09.20 [Wargame.kr] Login Fillttering (4) 2012.08.09 [Wargame.kr] Flee Button (4) 2012.08.09 댓글