文章总结: 文章记录了江苏省第四届数据安全技术应用职业技能竞赛初赛中源码泄露题的解题过程,包括通过git日志比对获取答案、分析ssh日志识别异常进程、以及使用binwalk和dd命令恢复块备份文件,但第三问因答案不符未能得分。 综合评分: 80 文章分类: 实战经验,数据泄露,安全工具,应急响应,CTF
源码泄露——江苏省第四届数据安全技术应用职业技能竞赛初赛
原创
一只岸上的鱼 一只岸上的鱼
一只岸上的鱼
2026年7月7日 21:51 江苏
在小说阅读器读本章
去阅读
源码泄露——江苏省第四届数据安全技术应用职业技能竞赛初赛
缘起
什么叫屡战屡败? 就是这次又没进决赛……
什么叫屡败屡战? 就是下次还参加……
只要每次能学点东西。
咱号称程序员,源码泄露题应该最简单吧,今天先来个简单的。
题干
见下图,一共三问,第二问最简单 还是先来第二问吧:
先来看看附件:
附件解压后是2个压缩文件,一个zip,一个gz,那还是放在kali里面处理好了:
全部解压成2个文件夹:
解压后看看文件:
bash
tar -xvf repo_server_snapshot.tar.gz -C repo
unzip leaked_repo_sample.zip
# 看看文件目录
tree -L 3
有个git仓库,进去看看,居然发现日志只有5条,现在知道为什么说他最简单了吧?因为每题可以提交10次答案,直接提交,第三次就对了:
code
2561d4af185e4e4d1dc1af4f6deedece003ffa6e
当然,这是投机取巧的做法,实际并不会每次都这样,正统的解法是这样的:
leaked_repo_sample.zip 是源码文件,应该从git中回复每个日志版本,然后比对文件,一样的那个日志就是答案:
bash
mv citizen-service-api.git .git
git --work-tree=./ checkout -b r1 2561d4af185e4e4d1dc1af4f6deedece003ffa6e
第一问:
什么叫异常?没说,那就是长的和别人不一样叫异常,看看log文件吧:
只有一条是“interactive_fetch”,那就是他了,记住他的进程id:ssh_pid=1217
再去auth.log看看:
找到前缀:key_fp_prefix
那就再去ssh key文件里面看看,计算一下:
对比前缀,就找到答案了:
code
SHA256:s1BnYrBJr15crIh48E/6UHuJKM2ZEARymspEhTjaQhU
用到的命令:
bash
tail git-shell.log
cat auth.log
ssh-keygen -lf ./authorized_keys
第三问:
这题很明显解出来了,但是答案一直不对,不知道怎么回事,记录一下解题过程:
这个文件是个块备份文件:
是可以直接用binwalk分离的:
分离的文件也是正常的,可以解压:
一共就4个文件,都不用继续处理,都试一次好了:
都不对!奇了怪了!
用到的脚本:
bash
file deleted_blocks/block_0017.bin
binwalk deleted_blocks/block_0017.bin
binwalk -e block_0017.bin --run-as=root
sha256sum 4BC
但是发现分离的文件都一样大,偷偷问了AI,说是binwalk和dd都是默认的贪婪模式:保守提取至文件尾,因为gz有校验,解压至文件结尾结束,所以正常解压不会报错,想要精确的得到文件,可以使用dd分离,并且控制大小:
bash
dd if=./block_0017.bin of=gz_11.gz bs=1 skip=1212 count=$((3370-1212))
就是使用count来控制大小,大小从binwalk读出的分离计算。
但是,没办法去验证是否正确了。
小结
这题算是对我来说,最简单的了,可惜,第三问还是没得分……
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:一只岸上的鱼 一只岸上的鱼 一只岸上的鱼《源码泄露——江苏省第四届数据安全技术应用职业技能竞赛初赛》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论