Notice
Recent Posts
Recent Comments
Link
«   2026/02   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
Archives
Today
Total
관리 메뉴

CTF PRE

SQL Injection - Blind - Time-Based 본문

웹해킹 공부

SQL Injection - Blind - Time-Based

hstuak 2021. 8. 1. 17:44

Time-based는 참이든 거짓이든 항상 같은 값을 돌려준다. ex) 'or 1=1 # && 'or 1=2 # 이 두 개를 대입해도 같은 값을 돌려줌

그럼 우리는 sleep() 함수를 사용을 해야 한다.

sleep 함수 사용
이 구문을 삽입을 하면 5초를 기다리고 데이터를 전송해준다. 
하지만 거짓일 경우에는 sleep 함수가 실행이 되지 않는다.

'or id=1 and substr(title,1,1) = "G" and sleep(1)# 를 삽입하면 어떻게 될까. 만약 값이 참이면 1초 동안 sleep을 하고 거짓이면 하지 않을 것이다. 하지만 'or id=1 and substr(title,1,1) = "I" and sleep(1)#를 삽입하면 거짓이니 sleep 함수가 실행이 되지 않을 것이다.

 union 을 써서 정보를 조회한다면 
'or 1=1 and length((select column_name from information_schema.columns where table_schema='bWAPP' and table_name='heroes' limit 0,1))=2 and sleep(5)#
이 코드를 삽입하여 응답이 5초 지연되면 참이라는 것을 알 수 있다.

이것도 아마 brute forcing을 하면 쉽게 정보를 탈취 할 수 있을 것이다.