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

이번 문제는 pw를 정확히 찾는 블라인드 SQL문제입니다.
이전 문제와 동일하게 SQLite를 사용하고 있습니다.
필터링으로는 sqlite, member, _ 를 막고 있습니다.
SQLite도 MySQL과 동일하게 length() 함수와 substr()함수의 사용이 가능합니다.
이를 이용해 패스워드의 길이를 찾는 값을 구성해보면
?pw=-1' or id='admin' and length(pw)=?-- -
위와 같이 구성할수 있습니다.
중간에 id='admin'을 추가한 이유는 우리가 찾으려는 pw는 admin의 pw인데 시도해보니
다른 id도 존재해서인지 True값이 두개가 출력됩니다.
해서 id='admin' and를 추가해 주었습니다.

8번째에서 True값이 나오는것으로 admin의 pw길이를 찾았습니다.
substr()함수를 이용해 pw를 찾는 쿼리도 구성해보면
pw=-1' or id='admin' and substr(pw,?,1)='?'-- -
위와 같이 구성이 가능합니다.
첫번째 물음표에는 1~8로 패스워드 1자리부터 8자리까지를
뒤에오는 물음표에는 값을넣어 비교하였습니다.
이전 MySQL에서는 ascii()함수나 hex()함수를 이용했는데
SQLite에는 ascii()함수가 존재하지 않으며 이번문제에서는 싱글쿼터를 필터링 하고 있지않아
굳이 hex를 사용하지 않았습니다.
위 내용을 토대로 exploit code를 구성해보면 아래와같이 작성이 가능합니다.

작성한 exploit code를 실행시켜보면

pw를 찾았습니다.
찾은 pw를 문제사이트에 전달해보면

문제가 해결되었습니다!
'Wargame(Web) > Lord of SQLInjection' 카테고리의 다른 글
(Lord of SQLInjection) POLTERGEIST 문제 (0) | 2022.12.05 |
---|---|
(Lord of SQLInjection) manticore 문제 (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 |