'CTF练习题解题'
题库传送门
https://www.ichunqiu.com/battalion
第一题 robot
打开页面,只有一张图片
想到了robot.txt和robots.txt
访问一下
但是啥也没有,看下源代码,拿到flag
第二题 seelog
字面意思访问下log
直接访问log,点access日志文件
查找页面响应码为200的信息,然后看到了这条
访问它,拿到flag
第三题 GETflag
截断了md5的0到6,我们利用大佬的脚本计算下captcha值
1 | import hashlib |
提交上去,变成error了,现在解决账号密码的问题
试试万能密码
成功登陆,拿到三个文件
txt都没用,php文件中说明flag在根目录
抓包
直接访问flag.php ,发现并没有。。。
只能找到绝对路径,尝试linux网站的默认路径/var/www/html/
(春秋靶场的路径是/var/www/html/Challenges/flag.php)
1 | 分析代码 |
照常网页页面空白,直接看源代码,拿到flag
第四题 VID
查看源代码,直接访问该文件
提交get请求使flag等于对应的值
直接访问,下载该文件
我们看下login.php
Username处只运用了Safe_data函数,跟进这个函数,发现存在注入
而箭头指向的那段代码,表示在username中找我们输入的车牌号“number”,如果找到就替换成空
根据文件路径访问到登陆界面
抓包
提交时number必须为0,然后对username进行报错注入
爆表,有flag和users表
and updatexml(1,concat(1,(select group_concat(table_name) from information_schema.tables where table_schema=database())),3)#
分段爆flag
and updatexml(1,concat(1,substr((select * from flag),1,15)),3)#
拿到最终flag
第五题 ipspoofing
访问页面,发现是一个个人博客之类的网站
拉到最底下
点击进入登陆页面
查看源代码,有提示
登陆说不在ip范围内
抓包改包,XFF头,利用modify heafers插件
修改IP为127.0.0.1拿到flag
第六题 PHPinfo
这题没啥好说的,文件包含
但发现啥也咩有,用其他伪协议,输出base64
php://filter/convert.base64-encode/resource=flag.php
解码拿到flag
第七题 天下武功唯快不破
通过代码审计:
利用setcookie把hello赋给token,并生成一个cookie
file_get_contents函数是把整个文件读入一个字符串中
file_put_contents($filename,$txt) 把变量txt里的每一个字符写入到filebame中
这里的大致意思为当token=hello是,把flag.php文件里的字符导入到路径:/u/通过md5加密的一个1到1000的的密文.txt,而且在10秒后进行删除,所以我们的速度必须要快
我们利用大佬的脚本,进行提交
1 | import requests |
利用脚本进行破解,成功获取(爆不出来,可以尝试在爆的过程中多对页面进行刷新)
忘了是哪道,网鼎杯的练习题
分析代码
1 | if((@file_get_contents($a,'r')===$b)&&(@file_get_contents($e,'r')==="I'm Administrator!")) |
a要与b的值绝对相等,r值要为I’m Administrator!
靶场IP 192.168.1.1 (具体地址忘了,我们假装他是这个IP)
VPS IP 192.168.1.2
利用hackbar发送GET请求
a=http://192.168.1.2/a.txt&b=125&e=I’m Administrator!&c=class.php
别问我class.php是哪来的,是从robots.txt看到的
之后发现没有显示,然后利用伪协议把输出变成base64
解码之后得到如下
查看源码,获取代码
1 |
|
分析代码if语句中含义是,m1不等于m2,但是m1的md5值要相等于m2的md5值,这就涉及到我知识的盲区了,最后百度到这篇文章。
利用md5的缺陷https://www.cnblogs.com/Primzahl/p/6018158.html
PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。
而且最后一行system函数说明$cmd可以执行系统命令
一开始使用cat的,没成功,之后换了more查看
m1=QNKCDZO&m2=s878926199a&cmd=more flag.php
查看源码,获取 flag{danjfb-asdfss-vsdfsa-fdsdaf-cvfsfa}
相关资料,md5,PHP伪协议
https://www.cnblogs.com/piaomiaohongchen/p/10659359.html
https://www.jianshu.com/p/0a8339fcc269