이번 문제 역시 sqlite 에 관해서 문제를 해결해야 한다.

 

코드를 보면 이전 문제들과 다르게 addslash 함수가 추가되었다. 그래서 특정값이 들어가면 \ (slash)를 추가하게 된다.

정석대로,,

id = admin' -- 를 시도하였으나, 들어가는 싱글쿼터 앞에 \ 가 추가된다. 아마도 싱글쿼터를 입력하면 자동으로 \를 붙이는 것 같다.

하지만 이상하게도? admin' 만 입력하면 기존 코드들이 보이지 않는다 ? => 즉, 비정상 실행, 쿼리문이 동작하지 않는다..

이게 이해가 되지 않아서 테스트 사이트에서 sqlite를 테스트해봤다.

https://sqliteonline.com/

 

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

 

 

sqlite
mysql

 

이전에 [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

+ Recent posts