메인화면입니다.

소스보기입니다.

45번 문제와 비슷합니다 하지만 몇가지 필터가 추가되었고 이번엔 쿼리결과로 lv 값을 받아옵니다 ~

[소스해석]

1.입력값이 특수문자일 경우 앞에 '\' 추가

2. 'from', 'pw', '(', ')', '공백', '%', '=', '>', '<' 필터링

3. id는 'union' 추가 필터링

4. lv=3이면 성공

먼저 필터링을 우회 해서 id부분에 인젝션을 이용하여 lv 1,2,3 결과를 찍어보겠습니다.

[id쿼리]

?id=%aa%27or%0alv%0alike%0a3%23&pw=guest

[lv1]

[lv2]

[lv3]

lv3일 때의 결과를 보면 이상합니다. 결과를 받아오지 못합니다.

즉, lv3이 컬럼이 없거나 쿼리가 잘 못된 것인데 lv1,2에서는 정상적으로 결과값을 출력했으므로

lv3 컬럼이 없다고 추측됩니다.

그럼 lv컬럼에 3을 만들어 주어야 하는데 이러한 기능을 해줄 수 있는 것은 union select가 있습니다.

id에는 union 필터링이 걸려있기 때문에 pw란을 이용하여 union을 사용해야 할 것 같습니다.

쿼리문을 만들어 보면 아래와 같습니다.

[우회 쿼리]

?id=%aa%27/*&pw=*/union%0aselect%0a3%23

주석 /**/을 사용하여 ?id=''union select 3# 을 만들고 공백을 우회 하기 위해 tab을 url인코딩한 %0a를 사용하였습니다.

[최종 URL]

https://webhacking.kr/challenge/web-25/?id=%aa%27/*&pw=*/union%0aselect%0a3%23

챌린지 50 성공!

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

[webhacking.kr] Level52 (old)  (173) 2020.04.28
[webhacking.kr] Level51 (old)  (343) 2020.04.28
[webhacking.kr] Level49 (old)  (304) 2020.04.28
[webhacking.kr] Level48 (old)  (311) 2020.04.28
[webhacking.kr] Level47 (old)  (346) 2020.04.28

+ Recent posts