CTF反序列化漏洞学习记录

0x00:利用点1-通过将敏感字符替换为特定的字符

在有些cms中存在将敏感字符替换为指定的字符,比如where->hacker

那么看似没啥问题,但如果是将序列化后的内容进行敏感词替换,那么就可能存在反序列化漏洞

测试代码如下

<?php

	$username = $_GET['username'];
	$sign = "hi guys";
	$user = array($username, $sign);

	$seri = bad_str(serialize($user));

	echo $seri;

	// echo "<br>";

	$user=unserialize($seri);

	echo $user[0];
	echo "<br>";
	echo "<br>";
	echo $user[1];


	function bad_str($string){
		return preg_replace('/\'/', 'no', $string);
	}

 这里传入ls,回显如下

 

传入ls'

 

 由于长度错误,导致反序列化过程发生错误

那么此时引起了思考,这个错误可以拿来做什么呢,类似很多sql注入那样,我们可以进行拼接成一个新的序列化语句。

那么在反序列的过程中就会去对拼接过后的语句进行反序列化。只要注意闭合!!!

这里要注入数组的序列化格式,二维数组的序列化格式

 

 序列化结果再嵌套了一个数组的序列化(闭合的时候要一定注意!!!)

好,怎么去利用呢

比如我们说了,'替换为no,就是说1位替换为2位 长度变长了

测试代码依然选用上面的

这边直接上另一个师傅的博客内容吧,夜深了,准备洗澡去

https://www.cnblogs.com/litlife/p/11690918.html

 

涉及CTF题目:[0CTF 2016] piapiapia

这道题可以用数组去绕过长度限制,坑点在于设置了post值为数组格式,那么其序列化过后就是个二维数组的序列化格式,闭合时仍然需要进行绕过里面的小数组。

 

0x01:利用点2

#

 

posted @ 2020-05-19 00:22  Tkitn  阅读(1057)  评论(0编辑  收藏  举报