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] Level 10  (2) 2017.11.07
[RedTiger] Level 9  (0) 2017.11.06
[RedTiger] Level8  (0) 2017.11.01
[RedTiger] Level7  (0) 2017.11.01
[RedTiger] Level6  (0) 2017.11.01

+ Recent posts