#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

+ Recent posts