'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