https://webhacking.kr/challenge/web-25/
소스 코드
50번 문제는 mb_convert_encoding() 함수의 취약점을 활용하여 문제를 해결할 수 있다.
mb_convert_encoding() 함수는 멀티바이트를 사용하는 언어셋 환경에서 \ (백슬래시) 앞에 %a1~%fe 값이 들어오면 인코딩이 깨지며 \ (백슬래시)를 덮어버리게 되는 문제가 발생한다.
select lv from chall50 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')
위 쿼리를 우회하기 위해 스페이스바를 /**/로 대체하였고
mb_convert_encoding() 함수의 취약점을 활용하여 ' (single quote) 를 위해 %a1%27 를 입력으로 주었다.
md5 암호화 하는 부분 또한 삭제하기 위해 /**/ (주석)을 사용하였다.
%27은 ' (single quote) 를 URL Encoding 하면 나오는 값으로 addslashes() 함수로 인해 \' 이와 같이 표현된다.
그렇기에, \ (백슬래시)를 없애주기 위해 %a1를 붙여 mb_convert_encoding() 함수의 취약점을 활용해준다.
id: %a1%27/*
pw: */union/**/select/**/3#
=> select lv from chall50 where id='%a1%27/*' and pw=md5('*/union/**/select/**/3#')
우회 완료 :)
https://webhacking.kr/challenge/web-25/?id=%a1%27/*&pw=*/union/**/select/**/3%23
'Web Security > webhacking.kr' 카테고리의 다른 글
[Webhacking.kr] old-08 (0) | 2023.06.18 |
---|---|
[Webhacking.kr] old-45 (0) | 2023.05.27 |
[Webhacking.kr] old-24 (0) | 2023.05.19 |
[Webhacking.kr] old-21 (0) | 2021.08.01 |
[Webhacking.kr] old-20 (0) | 2021.08.01 |