#About
L_03
Q : 착이가 POC 사이트에 접속했을 때, 웹서버의 시간은?
EQ : What time is web server when ChackYi visited POC site.
Key Format : Thur, 3 Nov 2011 09:00:00 GMT
주어진 지문에서 찾아야하는 것은 POC 사이트에 접속했을 때의 시간대 이므로 패킷 분석을 통해
http 헤더의 Host 필드에 POC 사이트를 의미하는 http://www.powerofcommunity.net/을 확인하면 된다
#Solution
# -*- coding:utf-8 -*-
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)
if tcp.dport==80 and len(tcp.data)>=0:
# request = dpkt.http.Request(tcp.data)
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 "[+] Host : ",data[data.find("Host")+5:data.find("Connection")].replace(data[data.find("User-Agent"):data.find("Keep-Alive:")+15],'')
except:
pass
def main():
p = open('C:/2011_HTP_PreQual_PROB.pcap','rb')
pcap = dpkt.pcap.Reader(p)
extract(pcap)
if __name__=='__main__':
main()
위 코드를 실행하게 되면 아래와 같이 Host 필드에서 powerofcoummunity.net을 확인할 수 있다
[그림 1] - Host 필드 확인을 통한 패킷 정보 확인
위에서 확인할 수 있듯 Host 정보로 poc를 가지는 IP 주소를 기반으로 아래와 같이 와이어샤크에 필터링을 걸었더니
HTTP 프로토콜의 GET 방식을 통해 패킷을 전달하는 것을 확인할 수 있었다
[그림 2] - IP 기반 패킷 필터식을 통한 패킷 확인
해당 패킷의 TCP 흐름을 따라가 보았더니 아래와 같이 문제에서 요구하는 서버의 시간을 확인할 수 있었다
[그림 3] - 플래그 값 확인
파이썬을 사용하지 않고 와이어샤크에서 제공하는 필터링 기능으로만 찾고자 하면 아래와 같은 필터식을 통해서도 찾을 수 있다.
[그림 4] - host 정보를 찾기 위한 패킷 필터식
'Wargame' 카테고리의 다른 글
2013 [Hack The Packet] M_01 (0) | 2018.03.21 |
---|---|
2013 [Hack The Packet] L_01 (0) | 2018.03.21 |
2011 [Hack The Packet] L_01 (0) | 2018.03.14 |
[FEDORA CORE 4] Dark_stone > Cruel (0) | 2017.12.29 |
[MEMORY] 2012 Nuit Du hack > Password Manager 2 (0) | 2017.12.28 |