BUUCTF--[0CTF 2016]piapiapia

本文详细介绍了0CTF 2016比赛中关于Piapiapia的一道题目,主要涉及PHP代码审计和反序列化漏洞的利用。通过dirsearch发现www.zip压缩包,分析config.php和用户注册功能,重点讨论如何通过构造超出长度的数据,利用PHP反序列化特性,绕过filter限制,最终读取服务器上的config.php文件,获取flag。
摘要由CSDN通过智能技术生成

[0CTF 2016]piapiapia

(一)
dirsearch扫出了了www.zip压缩包
在这里插入图片描述
(二)

在config.php中有变量flag,但为空,flag应该在服务器的config.php文件中,要找可以利用的漏洞读取服务器的flag
在这里插入图片描述
(三)代码审计

有注册功能,且代码中要求必须注册才能进行其后的操作;
update.php中对用户填写的信息进行了一些限制,且将信息序列化保存;class.php 中的 filter 也对用户信息进行了限制.

1、update.php
(1)phone 长度为11位;
(2)nickname长度小于 10 位,且只能为字母和数字;
(3)将用户填写的 phone、email、nickname 以及上传的 文件进行序列化

<?php
require_once('class.php');
	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_match('/^[_a-zA-Z0-9]{1,10}@[_a-zA-Z0-9]{1,10}\.[_a-zA-Z0-9]{1,10}$/', $_POST['email']))
			die('Invalid email');
		
		if(preg_match('/[^a-zA-Z0-9_]/', $_POST['nickname']) || strlen($_POST['nickname']) > <
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值