密码 php字符串解析-文件漏洞

文件包含漏洞-PHP伪协议

传入的file经过了过滤,但是没有过滤filter    php://filter 协议 

构造url ?file=php://filter/convert.base64-encode/resource=flag.php 

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

 

1.是格式

2.是可选参数,有read和write,字面意思就是读和写

3.是过滤器。主要有四种:字符串过滤器,转换过滤器,压缩过滤器,加密过滤器。filter里可以用1或多个过滤器(中间用|隔开),这也为解题提供了多种方法,灵活运用过滤器是解题的关键。这里的过滤器是把文件flag.php里的代码转换(convert)为base64编码(encode)

大写(转换)过滤器:string.toupper

4.是必选参数,后面写你要处理的文件名

php://filter还可以绕过,大概就是把不希望执行的语句先编码,这个编码类型可以破坏语句的正常执行
(比如base64编码只有64个字符,如果被编码的语句字符在64个字符里找不到对应的,就会忽略,略过它继续编码)
,然后再解码,这样就可以绕过这个语句了。

PHP的字符串解析特性

PHP将查询字符串(在URL或正文中)转换为内部关联数组 $_GET 或关联数组 $_POST 

例如:/?foo=bar变成Array([foo] => “bar”)

值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替

例如,/?%20news[id%00=42会转换为Array([news_id] => 42)

如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用以下语句绕过:
/news.php?%20news[id%00=42"+AND+1=0-

上述PHP语句的参数%20news[id%00的值将存储到$_GET[“news_id”]中。

PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事:

1.删除前后的空白符(空格符,制表符,换行符等统称为空白符)
2.将某些字符转换为下划线(包括空格)

例如:

User input Decoded PHP variable name
%20foo_bar%00 foo_bar foo_bar
foo%20bar%00 foo bar foo_bar
foo%5bbar foo[bar foo_bar

假如waf不允许num变量传递字母:                                                                  http://www.xxx.com/index.php?num=aaaa   //显示非法输入的话

那么我们可以在num前加个空格:                                                                http://www.xxx.com/index.php? num=aaaa   //显示非法输入的话

这样waf就找不到num这个变量了,因为现在的变量叫" num",而不是"num"。但php在解析的时候,会先把空格给去掉,这样我们的代码还能正常运行,还上传了非法字符

某些过滤字符 可用chr进行绕过

密码总结: 

base族

特征:base64,32密文都有等于号

base16

base16就是16进制转ASCII问题base16中只有数字0-9以及大写字母ABCDEF

base32

base32编码是由大写字母(A-Z)和数字234567组成与base64类似

解密网站:https://www.qqxiuzi.cn/bianma/base.php 里面也有详细的说明,有兴趣的自己看看

转化密文:MZWGCZZRGIZQ====

base64

base64是由大写字母(A-Z),小写字母(a-z),数字(0-9)以及+/组成

如果字符不足则会用“=”补齐,特征很明显。

转化密文:ZmxhZzEyMw==

凯撒密码

它是一种替换加密的技术,明文中的所有字母都在字母表上向后(或向前)按照一个固定数目进行偏移后被替

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值