php接收不到url传值_WEB漏洞 PHP 反序列化 (无类)

8128b4559a7e47a769fe99e139d25b55.png

c37d0c0439b5685f94f2b4dca1f3fedb.png

#PHP反序列化原理:未对用户输入的序列化字符串进行检测,导致攻击者可以控制反序列化过程,从而导致代码执行,SQL注入,目录遍历等不可控后果。在反序列化的过程中自动触发了某些魔术方法。当进行反序列化的时候就有可能会触发对象中的一些魔术方法。serialize()     //将一个对象转换成一个字符串unserialize()   //将字符串还原成一个对象

在理解这个漏洞前,你需要先搞清楚php中serialize(),unserialize()这两个函数。

序列化       serialize()

反序列化    unserialize()

什么意思?  JSON格式应该都知道吧  

# 开发人员这里有字典 利用json函数转换成json格式dic = {'name':'ajie','age':'18'}json {  "name" : "ajie",  "age" : "18"}

序列化 函数也是这种操作方法。

看代码

serialize() 函数

$key = "name";echo serialize($key)输出:s:4:"name";什么意思?  s 在代码中代表字符串,4 变量长度 ,name 是变量名

unserialize() 函数

$key = "s:4:"name";";echo serialize($key)// name

8c2a5d9589a462020dd779f81a3eea24.png

如果说 该漏洞是反序列化  url传参就是这种数值 x:x:"xxx"; 

如图所示:

79e613b59e62c155a669ef704d0bc59d.png

本地靶场测试

# 主页面代码<?php header('content-type:text/html;charset=utf-8');error_reporting(0);include "flag.php";$KEY = "ajie";$str = $_GET['str'];if (unserialize($str) === "$KEY"){    flag();}show_source(__FILE__);// class ABC{//     public $test;//     function __construct(){//         $test =1;//         echo '调用了构造函数
';// }// function __destruct(){// echo '调用了析构函数
';// }// function __wakeup(){// echo '调用了苏醒函数
';// }// }// echo '创建对象a
';// $a = new ABC;// echo '序列化
';// $a_ser=serialize($a);// echo '反序列化
';// $a_unser = unserialize($a_ser);// echo '对象快要死了!';?># flag 代码<?php function flag(){ echo "flag{abcdgr}";}?>

752bd81f25a321704aaaae9bd34d774e.png

观察源代码 发现 key的值是固定的 ajie  str变量在url中通过GET方式去获取 又因为使用了反序列化函数 所以对字符进行比较 成功则返回flag。

在撸一把CTF反序列化小真题压压惊

https://ctf.bugku.com/challenges#flag.php

访问url  提示hint  所以url 后面使用hint进行字符接收

67960650e58381a7cb98bd54c86ecfa4.png

无论怎么输入 都无法点击 这个是很好在url 后面加上?hint再去访问

c50e4aa68447cbcbf25c1bb66459228a.png

53ce7e54666b5eaea0f80259daa05122.png

分析源码 观察  其实思路和刚才的那个一模一样 只不过要细心 

变量 KEY在最下面 然后 利用代码将其转换

s:21:"ISecer:www.isecer.com";

哎 肿末回事?没反应呢  都说了仔细审题 cookie 需要对cookie 进行数据更改 打开burp 

70b21703f23efd72024af942342a662c.png

哎 不是说更改cookie就可以获取flag?? 你骗我??

69e6fed765aa94c6850c4c98e02c5386.png

ctf 之所以难呢 是因为审题不细心 php代码执行流程是从上到下依次执行 这个KEY在最后面  所以先执行cookie 哪里 再去对key进行赋值  所以 cookie哪里获取的值是空  这次再去尝试就可以获取flag

8f90894c64002e884bce943355c25a97.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值