Notice
Recent Posts
Recent Comments
Link
«   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
Archives
Today
Total
관리 메뉴

White Security

[wargame.kr] login with crypto! but.. 문제풀이 본문

Wargame Writeups/wargame.kr

[wargame.kr] login with crypto! but.. 문제풀이

POSIX 2019. 1. 25. 15:48

wargame.kr 사이트의 28번째 문제입니다.



sucker_enc 너무 짜증나요.

로그인을 할 수 있을까요?



본 문제는 오버플로우 문제입니다.


mysql_query에 너무 긴 쿼리가 주어지면

스택 오버플로우가 일어나서 false가 리턴된다는 점을 이용합니다.




admin 계정으로 로그인하면 될 것 같군요.



init 함수 내에 admin 계정의 ssn 기록되어 있지만

작동하지 않습니다.



mcrypt 모듈을 이용해 암호화 하는 것을 볼 수 있는데요.

따라서 ssn 인자 길이에 따라 sucker_enc($ssn) 의 길이을

조절하는 것이 가능합니다.


ssn 값이 너무 길다면

위처럼 쿼리문을 전달하기도 전에 php에서

오버플로우가 일어나니 적절히 조절할 필요가 있습니다.


길이를 적절히 맞추면

mysql_query에서 false를 반환하게 되므로

$row값은 null이 됩니다.


또한 ===를 사용한 엄격한 비교를 하고 있기 때문에

( false===null ) 조건식이 되어 die문을 넘어갑니다.



따라서 로그인해 실패했는데도

메시지만 출력하지 않고 하단의 로그인 페이지까지 같이

출력되는 것을 볼 수 있습니다.


여기서 pass 인자로 아무것도 주지 않으면

$_POST['pass'] 은 null 값이 되고

get_password 의 리턴값인 null과 일치해

로그인에 성공합니다.




Comments