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에 따라서 대소문자 구분의 여부가 달라진다.