流量包分析简介 - CTF Wiki (ctf-wiki.org)
Wireshark 基本语法,基本使用方法,及包过虑规则_wireshark语法_竹痕的博客-CSDN博客
MISC:流量包取证(pcap文件修复、协议分析、数据提取)_流量数据文件提取_小哈里的博客-CSDN博客
看了提示存在一个私钥
流量包中搜索KEY
tcp contains "KEY"
Base64解码
ORC在线识别
然后就可以查看http
传输内容了
追踪一下HTTP
流即可
发现flag
wireshark打开,发现很多HTTP和TCP的包
追踪流看看
请求包url解码看看
GET /index.php?url=gopher://127.0.0.1:80/
_POST /admin.php HTTP/1.1
Host: localhost:80
Connection: close
Content-Type: application/x-www-form-urlencoded
Content-Length: 78
id=1) and if((ascii(substr((select flag from flag),1,1))='45'),sleep(3),0) --
可以看到是一个ssrf和sql的时间注入
对flag读取第一个字符转换为ascii码,如果和45相等,就延时三秒,就是对数据库中的flag进行猜解
那我们过滤数据包的条件就在wireshark输入命令,http.time >=3
一共14个包,依次对这14次请求的参数进行ASCII码还原,得到flag
flag{1qwy2781}
打开流量包,大概浏览了一下,发现找到了一些get语句
拿出一句分析一下看看,可以发现是一个sql的注入查询,substring函数取字符串的特定位置,从1取到38。查看每个位置对应的ascii码,当ascii码正确时,取下个位置
id=1' and ascii(substring((select keyid from flag limit 0,1),1,1))=100#
用了下大佬的脚本
import re
with open("1.pcapng", "rb") as f: #打开名为"1.pcapng"的文件,使用二进制模式读取文件内容。
contents = f.read()
res = re.compile(r'0,1\),(\d+),1\)\)=(\d+)%23').findall(str(contents)) #使用正则表达式模式匹配文件内容,提取符合模式的数据。匹配到的结果以列表形式存储在变量res中。
dic = {} #创建一个空字典dic。
for a, b in res: #遍历匹配到的结果列表。
if a in dic: #检查字典dic中是否已存在键a。
if int(b) > dic[a]: #如果当前匹配到的值b(转换为整数类型)大于字典中键a对应的值,则执行以下操作。
dic[a] = int(b) #更新字典dic,将键a的值更新为当前匹配到的值b(转换为整数类型)。
else:
dic[a] = int(b)
flag = ""
for i in range(1,39): #遍历范围为1到38的整数。
flag += chr(dic[str(i)]) #将字典dic中键为字符串形式的当前整数i的值,转换为相应的字符,并添加到字符串flag中。
print(flag)
得到结果
电子取证-Windows日志分析 | W4rnIn9 (joner11234.github.io)
日志分析_RuoLi_s的博客-CSDN博客
某应用程序被攻击,请分析日志后作答: 黑客攻击的参数是______。(如有字母请全部使用小写)
直接看日志文件,可以发现参数是user
某应用程序被攻击,请分析日志后作答: 黑客查看的秘密文件的绝对路径是_____________。
base64解密里面传的语句即可得到
某应用程序被攻击,请分析日志后作答: 黑客反弹shell的ip和端口是_____________。
和上一问一样,分析这些语句,解密后就知道
一个日志文件,解码后发现有sqlmap的日志 ,大概分析一下
判断其ascii
码值的大小关系,判断正确返回的长度为675
错误返回长度678
这样我们就可以根据每一位的返回结果判断具体的ascii
值通过搜索password
分析
一直推下去 ,最后将ascii
转换为字符即可
NSSCTF{ngjfdsUbdK}