티스토리 뷰

Wargame/Webhacking.kr

Challenge 45

do9dark 2015. 8. 28. 14:48

SQL INJECTION 문제

id와 pw를 입력하는 걸로 봐서는 인증 우회 문제로 보인다.



기본적으로 적혀져 있는대로 로그인을 해보면 아래와 같이 hi guest가 출력 된다.



소스를 보면 index.phps 파일이 주어져 있다는 것을 알 수 있다.



index.phps 파일을 보면 id 부분은 admin, from ,union 등이 필터링되어 있고 pw 부분은 md5로 변환되서 비교를 한다는 것을 알 수 있다.

그리고 Query 위쪽에 보면 mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 이 있는데 이를 이용해서 magic_quote_gpc, addslashes, real_escape_string 을 우회할 수 있다. (single quote, double quote, back slash, null 문자가 입력될 경우 back slash를 붙여서 실행되지 않도록 해준다. escape characters)

id 로 입력되는 문자의 인코딩 방식을 euc-kr 에서 utf-8 로 변경을 해준다.

id 부분에 '를 입력하면 \' 가 되어서 '가 유효하지 않게 된다. 하지만 ' 앞에 %a1~%fe 의 값을 붙여주면 %5c(\)와 함께 하나의 멀티바이트 문자로 변경되면서 escape characters를 무효화할 수 있다.



id=guest%a1' or id in (0x61646d696e)-- -&pw=guest

를 입력하면 아래와 같이 된다.

"select id from members where id='guest%a1\' or id in (0x61646d696e)-- -' and pw=md5('guest')"

위와 같이 ' 앞에 \가 붙게 되지만 mb_convert_encoding($_GET[id],'utf-8','euc-kr'); 를 거치면서 %a1%5c 가 하나의 다른 문자로 변경되기 때문에 ' 가 유효해진다.

"select id from members where id='guest?' or id in (0x61646d696e)-- -

따라서 다음과 같이 id in (0x61646d696e) 에 의해서 admin으로 인증 우회할 수 있다.




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

Challenge 50  (0) 2015.09.05
Challenge 49  (0) 2015.09.03
Challenge 48  (0) 2015.08.31
Challenge 47  (0) 2015.08.31
Challenge 46  (0) 2015.08.29
Challenge 44  (0) 2015.08.28
Challenge 43  (0) 2015.08.28
Challenge 42  (0) 2015.08.28
Challenge 41  (0) 2015.08.15
Challenge 40  (0) 2015.08.14
댓글
«   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