초기 화면이다,
제출 해보니 hi guest라는 출력과 함께
get방식으로 전송되는 것이 보인다.
소스코드를 확인해보자 mb_convert_encoding함수가 무슨 일을 수행하는지 알아보아야 될것 같다.(표준 사용법, 용도, 취약점 등)
$result['id'] == "admin" 이면 문제가 풀리는거 같다.
"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"
이걸 잘 고려해서 Get방식으로 값을 넘겨주면 될 거같다.
(정말 몇시간이 걸렸다...)
https://dydgh499.tistory.com/32 를 참조하여 mb_convert_encoding 함수를 이해 하였다.
요지는 이 함수는 인코딩 할때 사용되는 함수이며 언어를 바꿔줄 때 사용된다.
멀티바이트를 사용하는 환경에서는 역슬래쉬 앞에 %a1~%fe의 값이 있으면 인코딩이 깨지면서 역슬래쉬를 덮어씌어 2바이트의 멀티바이트를 하나의 바이트 처럼 표현 되도록 하는 것이다!
ex) addslashes 함수에서 사용된다면
0x27 -> 0x5c27 -> 0xa15c27 -> 0x27
' -> \' -> (\)' -> '
함수 취약점을 이용한 ' 사용방법이다!
싱글 쿼터를 사용할 수 있으니 이제 내 입맛에 맞게 query문을 조작 할 수 있다.
"select id from chall45 where id='{$_GET['id']}' and pw=md5('{$_GET['pw']}')"
"select id from chall45 where id='' and pw=md5(' ')"
id=guest%fe%27%20or%20id%20like%20char(97,100,109,105,110)--%20&pw=guest
클
'Challenge > webhacking.kr' 카테고리의 다른 글
Webhacking 47번 문제 풀이 (0) | 2020.02.17 |
---|---|
Webhacking 46번 문제 풀이 (0) | 2020.02.17 |
Webhacking 44번 문제 풀이 (0) | 2020.02.14 |
Webhacking 43번 문제 풀이 (0) | 2020.02.13 |
Webhacking 42번 문제 풀이 (0) | 2020.02.13 |