Web Hacking/Lord Of Sql injection 풀이
[Lord Of Sql injection] nightmare
leeeeye321
2017. 12. 27. 00:13
[Lord Of Sql injection] nightmare
정말 악몽 같은 문제이지만 오~~래 고민하면 해결할 수 있을 것이다.
힌트: auto type cast
if(strlen($_GET[pw])>6) exit("No Hack ~_~");
$query = "select id from prob_nightmare where pw=('{$_GET[pw]}') and id!='admin'";
pw가 (' ') 안에 들어가게 되는데, 글자 수는 6자 이하로 제한된다.
문자열은 숫자와 비교하면 자동으로 0으로 치환된다고 한다.
여기서 비밀번호가 문자열인 id는 user2 뿐이다.
pw=0이 참이되는 id는 pw가 문자열인 user2이다.
pw=('')=0
'' 문자열이 0에 의해 자동으로 int로 형 변환(auto type cast) 되어서 위의 문장은 참이된다.
if(preg_match('/prob|_|\.|\(\)|#|-/i', $_GET[pw])) exit("No Hack ~_~");
그리고 뒤의 부분을 주석 처리하면 되는데, 주석 #이 차단되므로 이를 ;%00으로 대체한다.
악몽 clear