White Security
[wargame.kr] login with crypto! but.. 문제풀이 본문
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과 일치해
로그인에 성공합니다.
'Wargame Writeups > wargame.kr' 카테고리의 다른 글
[wargame.kr] counting query 문제풀이 (0) | 2019.01.28 |
---|---|
[wargame.kr] jff3_magic 문제풀이 (0) | 2019.01.27 |
[wargame.kr] dun worry about the vase 문제풀이 (0) | 2019.01.25 |
[wargame.kr] QnA 문제풀이 (0) | 2019.01.24 |
[wargame.kr] dmbs335 문제풀이 (0) | 2019.01.24 |
Comments