buuctf-[ZJCTF 2019]NiZhuanSiWei

在这里插入图片描述
在这里插入图片描述打开之后我们就可以进行php的代码审计。我们从头开始看起。
在第一个if中我们就可以看到要满足里面的等式才可以看到。(从代码来看,当给text传入“welcome to the zjctf”时可以进入到If语句。直接传值会被file_get_contents过滤掉,所以这里利用php伪协议来给text传值。1payload为text=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=)在这里插入图片描述file_get_contents()函数的功能是读取文件内容到一个字符串,但这里没没有一个文件,而是读取的text变量。没查到相关这方面的用法,特别是那个r参数。
这里我们如果直接将text与这段话进行等值那么我们就可以看到这个网站没有回显,也就是说我们要想办法绕过这个。
用php的伪协议也就是data://伪协议来进行漏洞利用。
在这里插入图片描述这里也就说明了我绕过了。
然后我们再看下一个if语句。
因为在一开始的界面我们就可以看到,这里面给了一个提示也就是useless.php,从这里我们可以联想到PHP伪协议里面有一个php://filter伪协议这是一个用来读取文件的一个伪协议。接下来我们就要开始构造payload。
?text=data:text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=(这个是welcome to the zjctf的base64编码后的一个)&file=php://filter/read=convert.base64-encode/resource=useless.php
之后我们就可以看到
在这里插入图片描述下面的这一段话就是一个base64的编码我们解码出来就可以看到在这里插入图片描述这个就是useless.php的源码。
file不为空将读取flag.php。所以。构造一个序列化字符串。

在这里插入图片描述我们可在菜鸟教程上面进行一下运行(记得要用php的编译器)我们就可以看到这个在这里插入图片描述最后我们再一次的构造payload:?text=data:text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=&file=useless.php&password=O:4:“Flag”:1:{s:4:“file”;s:8:“flag.php”;}
在源码中我们可以找到flag在这里插入图片描述

php反序列化

serialize()将对象的用字符串的方式进行表示,unserialize()将序列化的字符串,构造成相应的对象。
O:4:”Flag”:1:{s:4:”file”;s:8:”flag.php”;}1对象类型:对象名长度:“对象名”:对象成员变量个数:{变量1类型:变量名1长度:变量名1; 参数1类型:参数1长度:参数1; 变量2类型:变量名2长度:“变量名2”; 参数2类型:参数2长度:参数2;… …}

(https://blog.csdn.net/weixin_39927214/article/details/116281659)这个里面讲了php反序列化的知识点。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值