이번 문제 역시 sqlite 에 관해서 문제를 해결해야 한다.
코드를 보면 이전 문제들과 다르게 addslash 함수가 추가되었다. 그래서 특정값이 들어가면 \ (slash)를 추가하게 된다.
정석대로,,
id = admin' -- 를 시도하였으나, 들어가는 싱글쿼터 앞에 \ 가 추가된다. 아마도 싱글쿼터를 입력하면 자동으로 \를 붙이는 것 같다.
하지만 이상하게도? admin' 만 입력하면 기존 코드들이 보이지 않는다 ? => 즉, 비정상 실행, 쿼리문이 동작하지 않는다..
이게 이해가 되지 않아서 테스트 사이트에서 sqlite를 테스트해봤다.
SQL Online Compiler - Next gen SQL Editor
Chart for Data Science SELECT LINE-SELECT LINE-SELECT name as label, cos(id) as cos_c1ab394, sin(id) as sin_cFF0000 FROM demo; AREA-SELECT id as x, id as y FROM demo; BAR-SELECT name as label, id as y FROM demo; PIE-SELECT name as label, id as y FROM d
sqliteonline.com
이전에 [LOS] step16. SUCCUBUS 풀이 에서 \(역 슬래시)가 뒤에 따라오는 문자열들을 무력화시킨 적이 있었다.
[LOS] step16. SUCCUBUS 풀이
가장 먼저 필터링 확인하기 1) id 파라미터 : _ . ' 2) pw 파라미터 : _ . ' 분명 싱글쿼터가 모두 필터링되는데, 이 문제를 해결하려면 id 값이 있어야 한다. pw는 모르니 pw 파라미터를 무력화시키면서
sunnie399.tistory.com
sqlite에서는 이 방법이 통하지 않는다.
Name = ' \ ' 여기에 들어갔음에도 불구하고 뒤에 오는 or 1=1 문장을 실행시켰다.
반면, mysql 에서 id = ' \ ' 은 \ 뒤에 오는 싱글쿼터가 일반 문자가 되면서 뒤에 닫는 싱글쿼터가 없어졌으므로 에러를 뱉는다.
테스트 쿼리와 유사하게 던져봤을 때 쿼리가 정상실행된다. (정상 실행되지 않으면 mysql임)
이제 or 1=1 부분에 조건문을 넣어보자. id = admin 조건이 먹히지 않아 이 부분을 또, 우회해야 했다.
sqlite로 테스트 했을 때 hex값은 먹히지 않았다.
아스키코드 값으로 변환했을 때는 정상적으로 문자열을 인식했다.
성..공
'WEB > Lord of SQLinjection' 카테고리의 다른 글
[LOS] step39. poltergeist 풀이 (0) | 2023.10.19 |
---|---|
[LOS] step38. BANSHEE 풀이 (1) | 2023.10.19 |
[LOS] step36. chupacabra 풀이 (1) | 2023.10.18 |
[LOS] step35. cyclops 풀이 (0) | 2023.10.18 |
[LOS] step34. godzilla 풀이 (0) | 2023.10.17 |