티스토리 뷰

Wargame/Webhacking.kr

Challenge 7

do9dark 2015. 7. 5. 02:49


auth 를 누르면 아래와 같은 창을 볼 수 있다.



소스를 보면 admin mode 는 val=2라는 것과 index.phps 소스 파일 힌트가 있다.



index.phps 파일을 보면 실제로 DB에는 val=2가 존재하지 않고 UNION 즉, SQL Injection을 이용하여 val=2가 되도록 만드는 문제이다.

그리고 숫자 2와 더불어 SQL Injection에서 사용되는 문자가 있을 경우 Access Denied! 창을 보여주고 띄어쓰기가 있을 경우 cannot use space 창을 보여주도록 되어있다.




위와 같은 필터링을 우회하여 lv=2를 가져오도록 만들어주면 된다. 그리고 rand(1,5) 함수를 이용하여 Query를 5가지 형태로 만들어 두었으나 5가지 중에서 하나를 선택해서 시도하면 된다.


http://webhacking.kr/challenge/web/web-07/index.php?val=-1)union/**/select/**/(3-1

위와 같이 입력하면 $go=-1)union/**/select/**/(3-1 와 같이 값이 전달이 된다.

그러면 실행되는 Query를 보면 아래와 같다. ($rand==1일때 Query)

SELECT lv FROM lv1 WHERE lv=(-1)union/**/select/**/(3-1)

Query가 실행되면 앞에 SELECT 문은 출력되는 값이 없고 UNION 뒤에 따라오는 SELECT 문에서 3-1 즉, 2를 출력하기 때문에 문제를 해결할 수 있다.



Query가 5가지 경우가 있기 때문에 위와 같이 nice try! 가 뜨면 새로고침해서 다시 시도해주면 된다.

작성한 Query와 선택한 Query 형태가 같은 경우 auth 버튼이 생기고 누르면 문제를 풀 수 있다.



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

Challenge 12  (0) 2015.07.06
Challenge 11  (0) 2015.07.06
Challenge 10  (0) 2015.07.06
Challenge 9  (0) 2015.07.05
Challenge 8  (0) 2015.07.05
Challenge 7  (0) 2015.07.05
Challenge 6  (0) 2015.06.28
Challenge 5  (0) 2015.06.27
Challenge 4  (0) 2015.06.25
Challenge 3  (0) 2015.06.25
Challenge 2  (0) 2015.06.18
댓글
댓글쓰기 폼
«   2021/04   »
        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  
링크
공지사항
Total
118,522
Today
0
Yesterday
21