web
nani
打开网站什么都没有,查看源代码
点击链接,继续查看源代码
php://filter伪协议读取user.php源码
反序列化可以命令执行,但是需要绕过wakeup,因为wakeup会把命令清空,利用CVE-2016-7124即可绕过
先构造反序列化脚本
1 |
|
执行之后出现一个txt,访问就是flag。
random
题目
1 |
|
代码的意思是可以传入三个参数hello
seed
key
ssed作为mt_srand的形参,最终成为$true_key的组成部分
key作为$key
hello作为$a,若是能成功绕过,可以被执行
拿下来本地跑一下
在$true_key = mt_rand();
后面加一个echo $true_key;
看看这个$true_key是不是固定的
发现seed
恒为1
的时候$true_key
恒为1244335972
直接构造&seed=1&key=1244335972就可以绕过
然后命令执行就可以了
admin
查看源代码
1
2
3
4
5
6
7
8
9
10
11
12
13you are not admin ! <br/>hava a rest and then change your choose.
<!--
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];
if(isset($user)&&(file_get_contents($user,'r')==="admin")){
echo "hello admin!<br>";
include($file); //class.php
}else{
echo "you are not admin ! ";
}
-->
传三个参数user
file
pass
user等于admin的时候才能包含class.php
利用file_get_contents读取php://input数据流
绕过第一层检测
用filter伪协议读取class.php源码
解码base64
猜测flag在fffffflag.php中
反序列化回去就能读到了
1 |
|
就剩pass一个参数了
post1
感觉有点脑洞
查看源码1
2
3
4POST[a] 这次我们玩过滤好了。
<!--
eval(system($c));//read flag.txt But no cat!!!
-->
过滤了好多查看文件内容的命令
要用cut
命令看flag.txt
Linux cut命令用于显示每行从开头算起 num1 到 num2 的文字。
-b :以字节为单位进行分割。这些字节位置将忽略多字节字符边界,除非也指定了 -n 标志。
也过滤了空格 用${IFS}
代替
附上题目源码
1 |
|
ping
右键查看源代码
数组绕过+伪协议读取源码
1 | index.php: |
ping命令注入,过滤了很多字符
直接用回车符%0a绕过然后命令执行看到flag
post2
根据post1 cut出来的源码
1 | str_replace("flag.txt","pNHYVfirTGWAIygv.txt",$b); |
直接访问flag