(Lord of SQLInjection) manticore 문제입니다.
잘못알고 있는게 있다면 알려주시는 댓글은 언제나 환영입니다.

이번 문제도 SQLite를 사용하는 문제입니다.
MySQL문제에서 많이 봤던 함수 addslashes가 사용되고 있습니다.
문제해결을 위해서는 id가 admin이 되어야 한다고 합니다.
먼저 SQLite에서 addslashes가 작동되면 어떻게 되는지 알아야합니다.
addslashes함수는 싱글쿼터등에 앞에 \ 를 추가해 문자열로 바꿔버리는 함수입니다.
SQLite에서도 동일하게 동작되는지 확인하기 위해 온라인에디터를 이용해 확인해봤습니다.

select '\'';
MySQL에서는 \가 싱글쿼터( ' )를 사용하기 위해 사용한것으로 인식해 정삭적으로 쿼리가 실행됬었으나
SQLite에서는 \가 추가된다고 하더라도 문자열로 인식하지 않고 쿼리를 닫는데 사용되어 에러가 발생하였습니다.
실제로 싱글쿼터 하나를 지우고 실행해보면

정상적으로 싱글쿼터가 닫혀 쿼리가 실행되었습니다.
즉 SQLite에서는 addslashes라는 함수가 소용이 없다는 것을 확인했습니다.
그러면 그대로 싱글쿼터를 사용해 아래와 같이 결과를 내면 되는데
?id=-1' or id='admin'-- -
admin을 위해 싱글쿼터가 필요하기에 16진수로 바꿔줄 필요가 있습니다.
저번 문제를 풀고 SQLite를 공부하면서 알게된것이 있는데
SQLite는 select 16진수; 를 입력해도 문자열로 자동적으로 인식하지 않는다는 것입니다.

admin을 16진수로 바꾼값인데 결과를 보면 admin이 출력되지 않는 것을 볼 수 있습니다.
해서 char이라는 함수를 이용해줄 필요성이 있습니다.
온라인에디터에서 먼저 확인해보면

admin의 출력을 확인했습니다.
위 내용을 토대로 문제사이트에 전달할 값을 구성해보면
?id=-1' or id=char(0x61,0x64,0x6d,0x69,0x6e)-- -
위와 같이 정리 할 수 있습니다.
문제사이트에 값을 전달해보면

문제가 해결되었습니다!
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) POLTERGEIST 문제 (0) | 2022.12.05 |
---|---|
(Lord of SQLInjection) banshee 문제 (0) | 2022.12.04 |
(Lord of SQLInjection) chupacabra 문제 (0) | 2022.12.04 |
(Lord of SQLInjection) cyclops 문제 (0) | 2022.12.03 |
(Lord of SQLInjection) godzilla 문제 (0) | 2022.12.01 |