0x01 拿到题目第一件事是进行目录扫描,看看都有哪些目录,结果如下: 不少,首先有源码,我们直接下载下来,因为有源码去分析比什么都没有更容易分析出漏洞所在。 通过这个知道,它一共有这么几个页面,首页登录页面,注册页面,update更改信息页面,这几个页面是我们能够
if($_SESSION['username'] == null) { die('Login First'); } if($_POST['phone'] && $_POST['email'] && $_POST['nickname'] && $_FILES['photo']) { $username = $_SESSION['username']; if(!preg_match('/^\d{11}$/', $_POST['phone'])) die('Invalid phone'); if(!preg_ma...
一、php反序列化字符串逃逸 ";$c = unserialize($b);echo $c->pass;?> 运行结果:序列化后的字符串应该能看出来,大括号外面有类名及长度,括号里面以分号划分多个变量,包含其变量...
对username和password的长度进行判断,需要在3-16之间 再看一下class.php,在class.php看到过滤,将上面那些字符串改为hacker,可能用到的思路就是字符串逃逸,而且上面还有一些增删改查的函数 public function filter($string) { $escape = array('\'', '\\\'); $escape = '/' . implode('|', $escape) ....
如果想要将已序列化的字符串变回 PHP的值,可使用unserialize()反序列化漏洞前面源代码中有提到布尔型变量 bool类型的true跟任意字符串可以弱类型相等 构造 智能推荐 tomcat反序列化漏洞(cve-2016-8735) 复现起源: 近期在项目中碰到的ApacheTomcat中间件愈来愈多,于是乎。想着做一个整理。将ApacheTomcat中间件的几大...
//profile.php <?php require_once('class.php'); if($_SESSION['username'] == null) { die('Login First'); } $username = $_SESSION['username']; $profile=$user->show_profile($username); if($profile == null) { header('Location: update.php'); } else { $profile = unserialize($pr...
首先是同时执行class.php, 这里require_once是执行脚本时候包含执行目标文件。 然后对username和proifle进行验证, 这里show_profile 是class.php里面的函数,不用看这个函数,class.php中最重要的是: 是一个对符号和语句的替换过滤 然后是反序列化 $profile = unserialize($profile); ...
CTF-攻防世界-Web_php_unserialize(PHP反序列化)题⽬ 解题过程 PHP反序列化的⼀道题,从代码看出flage在fl4g.php这个⽂件⾥⾯,Demo类的构造⽅法可以传⼊⽂件名。把Demo的代码贴到本地做⼀下序列化 class Demo { private$file = 'index.php';public function __construct($file) { $this-...
在执行unserialize()之前会检查类中是否存在一个__wakeup()方法,如果存在,则会先调用__wakeup()方法,预先准备对象需要的资源。返回void,常用与反序列化操作中重新建立数据库连接或执行其他初始化操作。 触发条件参数 在使用unserialize()反序列化之前调用 无参数 ...
unserialize将字符串还原成原来的对象 序列化的目的是方便数据的传输和存储,在PHP中,序列化和反序列化一般用做缓存,比如session缓存,cookie等。 常见的序列化格式 了解即可 二进制格式 字节数组 json字符串 xml字符串 案例引入 简单的例子(以数组为例子)