IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> PHP知识库 -> CTF(JOSN弱类型) -> 正文阅读

[PHP知识库]CTF(JOSN弱类型)

CTF题(JSON弱类型)
首页只有
首页功能
其中有游客不允许访问 查看cookie
在这里插入图片描述
很明显authe是JSON转换的 则把authe转回去
在这里插入图片描述
在这里可以看到guest(游客)
把cookie里面改成admin的
在这里插入图片描述
但是网页没变化(8个?表示不确定的数值,乱填等于瞎搞爆破没意义)
只能查看源码了(这里可以下载到源码我这里是后面加.bak)
在这里插入图片描述

<?php require("header.php"); include_once("config/config.php"); if(!isset($_COOKIE['authe'])){ //secret_is_'hash.??????' $autharr=array( 'role'=>'guest', 'passnum'=>'????????' ); $auth= json_encode($autharr); ob_start(); setcookie('authe', $auth); ob_end_clean(); $_SESSION['isguest']=true; }else{ $temp=$_COOKIE['authe']; $data=json_decode($temp); $num=$data->passnum; if(json_last_error() != JSON_ERROR_NONE){ echo "json error"; exit(); } if($num!=="????????"){ for ($i=0; $i < 7; $i++) { //secret num is random generated that you can't guess, only admin can enter this site. if(!($num[$i]==$secretnum[$i])) { echo "random secret num error"; exit(); } } if($data->role==='admin'){ $_SESSION['isguest']=false; } } } $page=""; if (isset($_GET['page'])) { $page=strtolower($_GET['page']); $page=str_replace("#", "", $page); $page=str_replace("'", "", $page); if(strpos($page,"config")!==false) exit(); if(strpos($page,"phar")!==false||strpos($page,"zip")!==false||strpos($page,"data")!==false) exit(); $page=$_GET['page'].".php"; } else $page="main.php"; if(!isset($_SESSION['isguest'])||$_SESSION['isguest']===true) { echo "游客(guest)不允许访问更多功能"; exit(); } include($page); ?>

这里是原文规格的

<?php
	require("header.php");
	include_once("config/config.php");
	if(!isset($_COOKIE['authe'])){
		//secret_is_'hash.??????'
		$autharr=array(
			'role'=>'guest',
			'passnum'=>'????????'
			);
		$auth= json_encode($autharr);
		ob_start();
		setcookie('authe', $auth);
		ob_end_clean();
		$_SESSION['isguest']=true;
	  }else{
		$temp=$_COOKIE['authe'];
		$data=json_decode($temp);
		$num=$data->passnum;
		if(json_last_error() != JSON_ERROR_NONE){
			echo "json error";
			exit();
		}
		if($num!=="????????"){
			for ($i=0; $i < 7; $i++) { 
				//secret num is random generated that you can't guess, only admin can enter this site.
				if(!($num[$i]==$secretnum[$i]))
				{
					echo "random secret num error";
					exit();
				}
				
			}
			if($data->role==='admin'){
				$_SESSION['isguest']=false;
			}
		}

	  }
	$page="";
	if (isset($_GET['page']))
	{
		$page=strtolower($_GET['page']);
		$page=str_replace("#", "", $page);
		$page=str_replace("'", "", $page);
		if(strpos($page,"config")!==false)
			exit();
		if(strpos($page,"phar")!==false||strpos($page,"zip")!==false||strpos($page,"data")!==false)
			exit();
		
		$page=$_GET['page'].".php";
	}
	else
		$page="main.php";

	
	if(!isset($_SESSION['isguest'])||$_SESSION['isguest']===true)
	{
		echo "游客(guest)不允许访问更多功能";
		exit();
	}	
	include($page);
?>

在这里的源码可以知道一些信息
在这里插入图片描述

即需要将 在这里插入图片描述
变成FLASE就可以绕过游客登陆了
那么怎么变成FALSE呢,全文只有这里了
在这里插入图片描述

要么就是一开始就没有设置值(也就是)
在这里插入图片描述

忽略但是这个不现实
因为这是设置cookie
所以还是要去绕过for循环,这里就有一个JSON的弱类型利用,我们将cookie的usernum变成数组【true,ture。。。。。】这样在循环里面就可以全部绕过
Cookie的JSON修改为
在这里插入图片描述

好现在转换成url进cookie
在这里插入图片描述

Cookie现在为
这样就绕过了游客登陆
在这里插入图片描述

现在上传图片
现在先验证功能(上传正经图片来验证)
在这里插入图片描述

出现
在这里插入图片描述在这里插入图片描述

在这里插入图片描述

无论png还是.png都是这样 没办法了
只能去尝试看源码,源码怎么找呢 看url
这里出现了文件包含 那就用php://filter去看
在这里插入图片描述

注意这里后面没有.php所以后面的(其实index里面也有写为什么这里就不说了)
在这里插入图片描述

这里后面没有.php
在这里插入图片描述

解码后看源码
Php源码部分

<?php
	include_once("config/config.php");
	if(!isset($_SESSION['isguest'])||$_SESSION['isguest']===true)
	{
		echo "游客不允许访问";
		exit();
	}	

$error=$_FILES['pic']['error'];
$tmpName=$_FILES['pic']['tmp_name'];
$name=$_FILES['pic']['name'];
$size=$_FILES['pic']['size'];
$type=$_FILES['pic']['type'];
try{
	if($name!=="")
	{
		$name1=substr($name,-4);
		if(is_uploaded_file($tmpName)){
			$time=time();
			$file=md5($name);
			$rootpath='uploads/'.$file.$name1;
			if(!move_uploaded_file($tmpName,$rootpath)){
				echo "<script language='JavaScript'>alert('文件移动失败!');window.location='index.php?page=submit'</script>";
				exit;
			}
			else{
				if($name1===".php"){
					file_put_contents($rootpath,preg_replace("/<\?/","",file_get_contents($rootpath)));
				}
				
			}
		}
		echo "图片ID:".$time;
	}
}
catch(Exception $e)
{
	echo "ERROR";
}
//
 ?>

看到
在这里插入图片描述

知道过滤了<?
这样注意写一句话木马的时候要注意双写
在这里插入图片描述

还要注意这里文件名被md5加密了
在这里插入图片描述

上传一句话木马
在这里插入图片描述

加密的文件名
在这里插入图片描述

访问

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

现在链接上后台就行

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2022-02-14 20:53:46  更:2022-02-14 20:55:10 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 11:52:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码