第六届全国网络安全大赛代码审计全解

 XDCTF是一项面向全国在校大学生的信息安全类竞赛,由西电信息安全协会与网络攻防实训基地联合举行。旨在增强学生对网络常识的爱好,进步学生学习网络技术的积极性,培育学生的立异 认识、协作...

 XDCTF是一项面向全国在校大学生的信息安全类竞赛,由西电信息安全协会与网络攻防实训基地联合举行。旨在增强学生对网络常识的爱好,进步学生学习网络技术的积极性,培育学生的立异 认识、协作精力和理论联系实际的才能。

此次CTF WEB2是一个大题,总共4个flag,别离代表:获取源码、拿下前台办理、拿下后台、getshell。

方针站:http://xdsec-cms-12023458.xdctf.win/

依据提示:

0×01 获取源码

“时雨的十一

时雨是某校一名学生,素日宠爱php开发。 十一七天,全国人民都在水火之中地预备朋友圈杯旅行拍摄大赛,而苦逼的时雨却只能在宿舍给某凶恶安排开发CMS——XDSEC-CMS。

喜爱开源的时雨将XDSEC-CMS源码运用git更新起来,预备等开发完成后push到github上。

成果被领导发现了,喝令他rm一切源码。在领导的淫威下,时雨也只好删除了一切源码。

但聪明的小朋友们,你能找届时雨君的源码并发现其间的缝隙么?”

可得知获取源码的方法和git有关。

扫描9418端口发现没开,非Git协议。拜访http://xdsec-cms-12023458.xdctf.win/.git/ 发现403,目录或许存在,存在git走漏源码缝隙。

用lijiejie的GitHack东西获取源码:http://www.lijiejie.com/githack-a-git-disclosure-exploit/

并不能获取悉数源码,只获取到一个README.md和.gitignore。

读取README.md可见提示:“All source files are in git tag 1.0”。

能够反推出其时“时雨”的操作是:

git init
git add .
git commit
git tag 1.0
git rm –rf *
echo “All source files are in git tag 1.0” > README.md
git add .
git commit

真实的源码在tag == 1.0的commit中。那么怎样从走漏的.git目录反提取出1.0的源码?

这道题有“原理法”和“东西法”。当然先从原理讲起。

首要依据git目录结构,下载文件http://xdsec-cms-12023458.xdctf.win/.git/refs/tags/1.0 。这个文件其实是commit的一个“链接”。

这是个文本文件,便是一个sha1的commit id:

然后简略说一下git object。

Git object是保存git内容的目标,保存在.git目录下的objects目录中。Id(sha1编码过)的前2个字母是目录名,后38个字母是文件名。

所以d16ecb17678b0297516962e2232080200ce7f2b3这个id所代表的目录便是http://xdsec-cms-12023458.xdctf.win/.git/objects/d1/6ecb17678b0297516962e2232080200ce7f2b3

恳求(一切git目标都是zlib紧缩过,所以我使用管道传入py脚本中做简略解紧缩):

可见这也是个文本文件,指向了一个新id : 456ec92fa30e600fb256cc535a79e0c9206aec33,和一些信息。

我再恳求这个 id:

可见,得到一个二进制文件。

阅览下文可先简略了解一下git目标文件结构:http://gitbook.liuhui998.com/1_2.html

到这一步,咱们接下来会接触到的目标就只有“Tree 目标”和“Blob目标”。

这个图能够表明目标间的联系:

实际上我第一次获取的d16ecb17678b0297516962e2232080200ce7f2b3便是commit目标(绿色),方才获取的456ec92fa30e600fb256cc535a79e0c9206aec33是tree目标(蓝色),真实保存文件内容的是blob目标(赤色)。

那么这个tree目标详细的文件结构是:

[1] [2] [3] [4] [5] [6]  黑客接单网

  • 发表于 2021-04-15 17:50
  • 阅读 ( 168 )
  • 分类:互联网

0 条评论

请先 登录 后评论
ztj123
ztj123

722 篇文章

你可能感兴趣的文章

相关问题