ctf piapiapia(反序列化逃逸)解题记录

ctf piapiapia(反序列化逃逸)解题记录

前言

出现漏洞的两个重要因素是:1、敏感函数,2、可控参数。
打开url是一个登录界面,而且只有一个登录按钮。由于看到了登录界面而且没有验证码所以第一个想法是尝试弱口令登录,显然不成功,所以在这里来走了弯路。该题首先是需要通过目录扫描得到源码压缩包、注册账户的地址,得到源码后进行代码审计,发现蛛丝马迹,最终通过构造修改用户名的字符串利用反序列化逃逸得到在config.php中的flag
========================================================================

一、使用dirserch目录扫描工具对目标进行目录扫描

扫描发现了 /config.php、/www.zip、/regester.php。访问/www.zip得到源码。

在这里插入图片描述

二、进行php代码审计

1、源代码

index.php

<?php
	require_once('class.php');
	if($_SESSION['username']) {
   
		header('Location: profile.php');
		exit;
	}
	if($_POST['username'] && $_POST['password']) {
   
		$username = $_POST['username'];
		$password = $_POST['password'];

		if(strlen($username) < 3 or strlen($username) > 16) 
			die('Invalid user name');

		if(strlen($password) < 3 or strlen($password) > 16) 
			die('Invalid password');

		if($user->login($username, $password)) {
   
			$_SESSION['username'] = $username;
			header('Location: profile.php');
			exit;	
		}
		else {
   
			die('Invalid user name or password');
		}
	}
	else {
   
?>
<!DOCTYPE html>
<html>
<head>
   <title>Login</title>
   <link href="static/bootstrap.min.css" rel="stylesheet">
   <script src="static/jquery.min.js"></script>
   <script src="static/bootstrap.min.js"></script>
</head>
<body>
	<div class="container" style="margin-top:100px">  
		<form action="index.php" method="post" class="well" style="width:220px;margin:0px auto;"> 
			<img src="static/piapiapia.gif" class="img-memeda " style="width:180px;margin:0px auto;">
			<h3>Login</h3>
			<label>Username:</label>
			<input type="text" name="username" style="height:30px"class="span3"/>
			<label>Password:</label>
			<input type="password" name="password" style="height:30px" class="span3">

			<button type="submit" class="btn btn-primary">LOGIN</button>
		</form>
	</div>
</body>
</html>
<?php
	}
?>

class.php

<?php
require('config.php');

class user extends mysql{
   
	private $table = 'users';

	public function is_exists($username) {
   
		$username = parent::filter($username);

		$where = "username = '$username'&
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值