Information Security

[Lord Of Sql injection] nightmare 본문

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