user 파라미터(integer)를 입력받아 Username과 Email을 출력해준다.
?user[]=1과 같이 입력해주면 mysql_real_escape_string() 함수를 사용하는 것을 확인 할 수 있다. 따라서 single quotation과 같은 특수문자는 사용이 불가하다.
하지만 integer 기반 쿼리이기 때문에 single quotation 없이 SQLi가 가능하며, union select 구문을 사용할 수 있다.
또한 like와 parentheses 등 주요 기능이 필터링 되어 있다.
union을 사용하다 보면 2번째 컬럼에서 username의 이름을 넣어주면 쿼리가 정상 동작하는 것을 알 수 있다.
여기서 username 컬럼에 deddlef를 hex encoding 하여 보내줘도 동일한 결과가 출력되는 것을 알 수 있으며, deddlef'는 에러가, deddlef'#는 에러가 발생하지 않는 것을 확인 할 수 있었다.
여기서 출력되는 쿼리의 결과에서 username 부분을 새로운 쿼리에 넣어 실행, 결과를 출력하는 것이라 예상 할 수 있으며 exploit code를 hex encoding 하여 보내주면 패스워드를 얻어낼 수 있다.
'Wargame > RedTiger:OverTheWire' 카테고리의 다른 글
[RedTiger] Level8 (0) | 2017.11.01 |
---|---|
[RedTiger] Level7 (0) | 2017.11.01 |
[RedTiger] Level5 (0) | 2016.10.19 |
[RedTiger] Level4 (0) | 2016.10.19 |
[RedTiger] Level3 (0) | 2016.10.19 |