write-ups/Lord of SQL Injection

[Lord of SQL Injection] Troll 풀이

2016. 11. 8. 01:59


Lord of SQL Injection (LoS) - Troll 



Analyze

admin 을 필터링한다. 어쩌지 id에는 admin이라는 값이 들어가야 할텐데...ㅜ





Solution

ereg는 대문자와 소문자를 서로 다른 문자 취급한다.

ex. 'a' != 'A'



이미 취약점도 발견돼서 preg_match()를 대신 사용하여야 한다. php.net의 설명에도 나왔있듯, php 7.0.0 버전부터는 완전히 삭제되었다. 



 어째뜬 한 글자만 대문자로 바뀌어도 다른 문자열 취급하는데, DB에서는 대소문자 구별이 딱히 없으므로 


id 에서 admin 값이 나올 수 있는 것이다. 



+) 내가 작년에 저 문제를 풀었을 때는 몰랐는데, SQL Injection하는 데이터베이스의 charset에 따라서 대소문자 구분의 여부가 달라진다.