这么多数据包
题目:
这么多数据包找找吧,先找到getshell的流
解题:
使用wireshark打开,发现没有http协议的请求,使用命令搜索可能包含flag的tcp流,一般搜索关键词 command ,ls,dir,flag等等。
tcp contains "dir"
筛选出几个tcp流,追踪最后一个,发现有个base64字符串,解密后得到flag
CCTF{do_you_like_sniffer}
手机热点
题目:
httppan.baidu.coms1cwwdVC 有一天皓宝宝没了流量只好手机来共享,顺便又从手机发了点小秘密到电脑,你能找到它吗?
题目来源:第七季极客大挑战
解题:
使用wireshark打开,发现很多请求,找不到有用的,尝试使用binwalk提取文件试试:
binwalk -e ./Blatand_1.pcapng
从提取文件中发现了flag。
SYC{this_is_bluetooth}
抓到一只苍蝇
题目:
抓到一只苍蝇
解题:
使用wireshark打开,根据题目提示搜索 tcp contains "fly" ,看到第一个是上传,跟踪http流
可以看到上传文件大小525701,
接着往下看上传的文件内容,看到是分成5段上传的。
把每段按顺序保存下来,命名为1,2,3,4,5
文件->导出对象->HTTP->save ,把五个application/octet-stream 挨个保存下来。
5个数据包media type 的大小是131436*4 和最后一个1777,131436*4+1777=527571-525701=1820/5=364需要每个文件去掉其364字节的文件头。
linux下使用命令处理下文件
dd if=1 bs=1 skip=364 of=11 //命令格式为 dd if=文件名 bs=1 skip=364 of=要保存的文件名
五个文件每个按这个命令执行一遍,生成5个新文件,再把五个新文件结合成一个文件。
cat 11 22 33 44 55 > flag.rar //11 22 33 44 55 为新文件的文件名
然后双击打开发现报错,使用winhex打开看一下,发现是伪加密,把图中的84改为80:
保存后,双击打开得到一个flag.txt,发现是个win32程序
改后缀名为exe,打开后发现出现很多苍蝇。。。这个程序挺好的,能缓解工作压力。
放到kali下 使用foremost flag.exe 提取文件,发现一个二维码,扫码后得到flag
flag{m1Sc_oxO2_Fly}
日志审计
题目:
请从流量当中分析出flag
来源:第七届山东省大学生网络安全技能大赛
解题:
题目是sqlmap采用二分法进行注入的日志,办法很多,可以根据特征进行分析。
这里举例说一种。如果对Apache日志熟悉的话,应该知道,access.log里面会记录Response的状态码和Response包的长度。猜解正确或错误,返回的长度是不同的。
urldecode解码几条记录:
id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>96 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>112 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>120 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>124 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 200 1765 id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>126 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 404 5476 id=2' AND ORD(MID((SELECT IFNULL(CAST(flag AS CHAR),0x20) FROM dvwa.flag_is_here ORDER BY flag LIMIT 0,1),24,1))>125 AND 'RCKM'='RCKM&Submit=Submit HTTP/1.1" 404 5476
以猜解的第24位为例,猜解正确的时候,返回的状态码为200,长度为1765;猜解错误的状态码为404,长度为5476。而且可以得出结论,sqlmap采用二分法进行注入的时候,正确的值为最后一次进行>比较正确的值+1,即为125。
解题脚本:
# -*- coding:utf-8 -*- import re import urlparse root_path = unicode('D:\\ctfWP\\bugku\\分析\\日志审计\\access.log', 'utf-8') flag_ascii = {} for line in open(root_path): r = re.findall('(.*)flag_is_here(.*)HTTP/1.1" 200(.*)', line) if len(r) > 0: data = urlparse.unquote(line) matchObj = re.search(r'LIMIT 0,1\),(.*?),1\)\)>(.*?) AND', data) if matchObj: key = int(matchObj.group(1)) value = int(matchObj.group(2)) + 1 flag_ascii[key] = value # 使用字典,保存最后一次猜解正确的ascii码 flag = '' for value in flag_ascii.values(): flag += chr(value) print flag
flag{sqlm4p_15_p0werful}