본문 바로가기
CTF/Dreamhack

[Dreamhack] baby-sqlite

by 8희 2023. 10. 4.

https://dreamhack.io/wargame/challenges/1

 

baby-sqlite

로그인 서비스입니다. SQL INJECTION 취약점을 통해 플래그를 획득하세요! 해당 문제는 숙련된 웹해커를 위한 문제입니다.

dreamhack.io

 

SQL 인젝션 취약점을 이용하여 플래그를 획득하는 문제이다.

 

 

로그인을 할 수 있는 페이지가 있다. SQL 인젝션을 하기 위해서 제공된 코드를 봐야 할 것 같다.

 

 

sql result가 admin이면 FLAG가 출력된다는 것을 알 수 있다.

 

 

그러나 DB에 uid가 admin인 데이터가 없으므로 결과 값에서 admin이 나와야 한다.

 

 

로그인 할 때, 입력 받은 값은 모두 소문자 처리와 필터링이 된다.

그리고 level 값은 기본으로 9를 가지게 된다. 

'와 "가 필터링 되어 있으므로 uid와 upw에 공격하기 어려우므로 level 부분에 공격을 시도할 것이다.

 

level 부분에 공격하기 위해서 level을 입력하는 란을 추가해줬다.

 

 

공격 코드를 level 입력 란에 입력했다.

 

9/**/union/**/values(char(0x61)||char(0x64)||char(0x6d)||char(0x69)||char(0x6e))

 

공격 코드는 위와 같다. 

SQLite에서 /**/ 주석으로 공백 처리가 가능하고, union을 이용해서 원하는 값을 출력시킬 수 있다.

 

SELECT uid FROM users WHERE uid='a' and upw='a' and level=9 union values('admin');

 

위 코드는 이것을 의미한다.

 

 

입력 후에 제출하면 플래그 값이 출력된다.

 


참고

https://devhacks.tistory.com/135#%5B%ED%92%80%EC%9D%B4%5D-1

 

'CTF > Dreamhack' 카테고리의 다른 글

[Dreamhack] [wargame.kr] md5 password  (0) 2023.11.01
[Dreamhack] simple_sqli_chatgpt  (0) 2023.11.01
[Dreamhack] login-1  (0) 2023.10.04
[Dreamhack] Broken Password  (0) 2023.10.04
[Dreamhack] file-special-bit  (0) 2023.09.26