声明:本文内容仅供学习交流,所有因传播利用文章内相关技术造成的不良后果均由使用者本人负责,与本公众号和文章作者无关。如需转载,请注明出处,未经作者允许不得随意删改本文内容。
导读
10月25日至26日,在工业和信息化部网络安全管理局的指导下,中国电子信息产业发展研究院、中国信息通信研究院、国家工业信息安全发展研究中心、中国软件评测中心(工业和信息化部软件与集成电路促进中心)联合举办了“2022年首届数据安全大赛”赛道一(数据安全大闯关)预赛。
结果
来自全国各地的1000余支队伍积极报名参赛,最终角逐出前100名进入线下决赛。其中来自电子科技大学的御林安全团队的ab4o、小小火和落花三人组成的“清水河大专”队荣获初赛第13名!(掌声祝贺)
下面分享该次比赛的wp。
WP
一、泄露溯源定位1
wireshark过滤mysql
看到登录用户 最后一个交互最多 dataUser3
二、泄露溯源定位2
github搜索dcf_customer字段,选择code
定位到repo
https://github.com/Tristan-Hao/Green-Berry/blob/main/catalogue.py
提交内容为
https://github.com/Tristan-Hao/Green-Berry/blob/main/catalogue.py
三、泄露溯源定位3
mysql查询
数据加密方式AES 密钥是aa01,分别对下面的数据进行解密,就可以得到泄露的数据类型ADEG
四、SQL packet 1
看http方法,有个shell直接明文执行命令,
ls追踪http流 就可以看到secret
五、SQL packet 2
http导出对象 一个个看,看到有hex编码,解一下,在文件最后看到secret
六、SQL packet 3
对第二问得到的内容进行代码解混淆,根据PHP反混淆经验看应该是phpjiami搞得一个PHP obsfucation
https://www.phpjiami.com/phpjiami.html
所使用脚本如下
https://github.com/wenshui2008/phpjiami_decode
解密后的内容为
得到flag
c11d2a1b-3f7d-4578-b3d6-366d0e14a1d4
七、SQL packet 5
冰蝎流量分析 key是05c1cc9c2deafb75
流量包是先解aes再解base64,一个个看就可以看到有一个数据包有上传文件的操作 文件名如下
八、账密泄密追踪1
https://github.com/Tristan-Hao/Green-Berry/blob/main/scrubbers.py
搜索关键字green berry
九、账密泄密追踪2
搜green berry还是青莓来着 ,忘了。repo是datasecurity,直接定位到了
https://gitee.com/datasecurity-qunzhong/qing-mei-login/blob/master/scrubbers.py
十、账密泄密追踪3
搜青莓 或者青梅 忘记了,定位到源代码 符合密钥条件
https://www.yuque.com/shuanxiaoming/gsx1eb/efnpu3
十一、账密泄密追踪4
知乎搜索qingmei 时间范围半年内 直接找到源代码
https://zhuanlan.zhihu.com/p/521587651
十二、账密泄密追踪5
搜青莓 反正那几个关键字 拼音 换着搜
https://blog.csdn.net/haoxin1983/article/details/125905827
十三、blue team1
十四、blue team2
根据时间定位用户ming的登录日志
使用日志分析工具辅助定位
题目没太看懂,IP地址肯定是192.168.13.1,但是端口试了很多都不行,最后看到NTLM V2 ,试了一下RDP默认的3389就可以了
十五、blue team3
procmon根据BT4的结果定位进程没有结果,试了几个可执行文件不行,遂放弃。
然后看进程,可以发现是通过WINWORD.EXE打进来的,与用户ming有关,搜一下用户ming的desktop与download目录
可以发现有helper.doc
然后看WINWORD.EXE进程
最后可以看到是在helper.doc之后才能在C盘看到机密文件,考虑helper.doc是提权payload(先考虑交的其他dll和exe都不对)
十六、blue team4
直接看进程树,看到了可疑进程audqky.exe,交了不对,遂交后面的,肯定对,因为像加载器的动作。
yxxxx.exe md5之后就可以了
十七、blue team5
procmon翻一下 翻到了含身份证的,根据数据分级分类条例,危害程度比内网密码要高,所以交的这个文件名的MD5
数据安全题
一、easy_node
访问/src查看源码,login的jwt验证存在缺陷,可以使用none注入
接着需要设置properties,遍历不能包含flag,最后getflag遍历要有flag
突破点在copyArray函数, 会递归解析对象类型
function copyArray(arr1){
var arr2 = new Array(arr1.length);
for (var i=0;i<arr1.length;i++){
if(arr1[i] instanceof Object){
arr2[i] = copyArray(arr1[i])
}else{
arr2[i] = arr1[i]
}
}
return arr2
}
因此设置properties
{
"properties": {
"length": 1,
"0": {
"0": "flag",
"length": 1
}
}
}
经copyArray处理后会变成
[ [ 'flag' ] ]
然后getflag即可,[‘flag’]==”flag”
二、ECB
解一下返回的hex就可以看到flag,感觉像是非预期解?
三、sneakshot
用mac打开 亮度调到最低 对比度拉满 可以看到flag字样,手机拍不太清,电脑上能看到flag字样
flag{22538e2282}
数据算法题
一、手机号
比较重点的是正则匹配
phone_pattern = "(?<=([^d]))(((+86)|(86)|((+86)))?[ ]?d{3}[ -/]?d{4}[ -/]?d{4}[^d])"
(?<=([^d]))
意味着匹配非数字后面的,也就是手机号前面不能有数字。接着是匹配(+86), 86,或者+86,当然也可能没有,所以用的?。后面可能会跟一个空格[]。后面11位数字中,可能会有空格,-,/这三类分隔符(其它分隔符经手动验证,匹配到的不是手机号)。最后是一个[^d]
,防止出现匹配到大于11的数字字符串。
匹配后还有一点需要关注
首先前缀3位需要满足题目条件,有些数据前面可能会有86,导致整个字符串是13位数字,也要分情况讨论。不过这种情况下,该行都会有关键字可以区分。
二、imei
imei_pattern = r"(?<=([^d]))([0-9]([0-9]|[^0-9a-zA-Z!*%./^#,()'<>"]){13,20}[0-9])"
同样(?<=([^d]))
意味着匹配非数字后面的。之后先匹配一个0-9的数字,末尾也匹配一个0-9的数字,中间可能是数字也可能是分隔符,所以用了一个|,经测试!*%.^#,()'<>这些分隔符得到的都不是imei。虽然imei只有15位,但是加上分隔符就会更多,所以这里用了{13,20}。
这里同样需要imei的前两位满足题目条件。同时,银行卡号可能也会有15位数字,容易误报,这里就使用了两个关键字bank或者card。
三、bankCard
card_pattern = r"(?<=([^d]))[0-9](([0-9]|[^0-9a-zA-Z!*%./^#,()'<>"]){13,24})"
同样(?<=([^d]))
意味着匹配非数字后面的。之后先匹配一个0-9的数字,后面就匹配要么数字要么分隔符了。{13,24}是为了防止有多个分隔符。
这里有三处需要注意的,第一个,手机号加上86就是13位了,经手动验证,如果 开头的两位数字是86,且全部数字长度是13,都是手机号,这里直接continue。第二个,imei15位也可能会冲突,这里是使用关键字_id, device, imei, equipment等去匹配,然后continue,剩下才是银行卡号13-19位数字的,同样前三位需要满足题目条件。
四、ip
ip_pattern = r"((2((5[0-5])|([0-4]d)))|([0-1]?d{1,2}))(.((2((5[0-5])|([0-4]d)))|([0-1]?d{1,2}))){3}"
IP就没啥好说的了,可以直接谷歌搜索,保证在IPv4范围内即可。
五、email
ems_pattern = r"[^@s>]+(@[^@s]+)+.[^@s]*(com|cn|net|org)"
经手动分析,邮箱后缀只有四个,注意有些没有后缀如gmail也是,@xx@xx可能有多个等。
中间其实都有diff一下,手工去验证,排除一些误报。
总结
这次比赛真的挺有意思的,除了传统ctf之外加了很多应急与流量分析的知识,能够让大家学习到很多知识,好评!希望这种比赛多多益善。
END
原文始发于微信公众号(御林安全):祝贺御林安全团队2022首届数据安全大赛初赛第13及wp的分享