#About
MQ : 누군가 80번 포트를 통해 나의 중요한 파일을 삭제했다.
MEQ : Someone defaced my system via 80 port and deleted very important file of mine.
Hint : METHOD vulnerability. check the contents of uploaded file.
#Solution
포트번호 80이면 http 프로토콜이며 파일을 삭제했다고 하여 제일 먼저 떠오른건 http method 중 delete였다.
하지만 패킷 분석 스크립트에서 method가 delete인 패킷을 검색해보았으나 나오지 않았고
최소 GET과 POST는 아니라고 생각이 들어 다음과 같이 스크립트를 작성해 보았다
# -*- coding:utf-8 -*-
'''
Author : Loddy
Date : 2018-03-21 (UTC + 09 : 00)
Purpose : To Analyzing Packet
'''
import socket
import dpkt
import datetime
def mac_addr(address):
return ':'.join('%02x' % ord(mac) for mac in address)
def extract(pcap):
for timestamp,data in pcap:
try:
eth = dpkt.ethernet.Ethernet(data)
ip = eth.data
tcp = ip.data
src,dst = socket.inet_ntoa(ip.src),socket.inet_ntoa(ip.dst)
http = dpkt.http.Request(tcp.data)
if tcp.dport==80 and (http.method!="GET" and http.method!="POST") and len(tcp.data)>=0:
print "[+] Method : ",http.method
print "[+] Timestamp : ",datetime.datetime.fromtimestamp(timestamp).strftime('%Y-%m-%d %H:%M:%S')
print "[+] MAC Address : ",mac_addr(eth.src), ' --> ', mac_addr(eth.dst)
print "[+] IP Address : ",src+" --> "+dst
print "[+] Data : ",data
except:
pass
def main():
p = open('C:/2013_Hack_The_Packet_Online_PreQUAL_PROB.pcap','rb')
pcap = dpkt.pcap.Reader(p)
extract(pcap)
if __name__=='__main__':
main()
위 스크립트를 실행하면 아래와 같이 OPTIONS와 PUT method를 확인할 수 있다
[그림 1] - HTTP METHOD 필터링을 통한 패킷 확인
확인된 패킷의 METHOD 정보가 두 패킷 밖에 없으므로 아래와 같이 와이어샤크에 METHOD 필터식을 이용하여 확인 결과 플래그를 확인할 수 있었다
[그림 2] - HTTP METHOD 필터링 식을 통한 패킷 확인
패킷을 확인 후 스트림을 따라가 확인해보았더니 문제에서 요구하는 파일을 삭제한 범인을 확인할 수 있었다.
[그림 3] - 플래그 값 확인
FLAG = W26d@v@ttack
'Wargame' 카테고리의 다른 글
[LINUX] 2012 Secuwave F100 (0) | 2018.09.15 |
---|---|
[SCENARIO] CFReDS_ data leakage case (0) | 2018.07.19 |
2013 [Hack The Packet] L_01 (0) | 2018.03.21 |
2011 [Hack The Packet] L_03 (0) | 2018.03.21 |
2011 [Hack The Packet] L_01 (0) | 2018.03.14 |