ASP注入漏洞

一、SQL注入的原因

按照参数形式:数字型/字符型/搜索型

1、数字型sql查询

sql注入原因:

ID=49 这类注入的参数是数字型,SQL语句原貌大致如下:

id=request.querystring("id")

sql="select * from 表名l where 字段= "&id

sql注入产生,sql闭合

注入的参数为 ID=49 And [查询条件],即是生成语句:

sql="Select * from 表名 where 字段=49 And [查询条件]"

2、字符型sql查询

sql注入原因:

name=abc 这类注入的参数是字符型,SQL语句原貌大致概如下:

name=request.querystring("name")

sql="select * from 表名 where 字段= '"&name&"'"

sql注入产生,sql闭合

注入的参数为name=abc’ and [查询条件] and '1'='1 ,即是生成语句:

sql="Select * from 表名 where 字段=’abc’ and [查询条件] and  '1'='1'"

3、搜索型sql查询

sql注入原因:

搜索时没过滤参数的,如 keyword=关键字,SQL语句原貌大致如下: Select * from 表名 where 字段 like ’%关键字%’

keyword=request.querystring("keyword")

sql="select * from detail where url like '%"&keyword&"%'"

sql注入产生,sql闭合

注入的参数为 keyword=’ % and [查询条件] and ‘%’=’, 即是生成语句:

sql="Select * from 表名 where 字段 like ’%’ and [查询条件] and ‘%’=’%’"

二、SQL注入防御

防御方法不外乎两种,一白名单,二黑名单。

A、白名单:

解决数字型注入的方法一般采用白名单方式,只允接收的值为数字型。

a、id=cint(request.querystring("id"))

cint范围 -32,768 到 32,767。 可能存在数据溢出
clng范围 -2,147,483,648 到 2,147,483,647

b、if not isnumeric(id) then

response.end

end if

c、正则匹配

B、黑名单:

字符型或搜索型注入一般采用名单,进行过滤或者转义一些特殊字符,以达到修复效果。

a、word=replace(request.querystring("word"),"'","")

b、if instr(username,"'") Then 
     Response.end  
     end if           //包含了单撇号 则 不进行下面的sql查询

三、参数接收方式

GET型sql注入

id=request.querystring("id")

sql="select * from detail where id= "&id

POST型sql注入

id=request.form("id")

sql="select * from detail where id= "&id

Cookie型sql注入

id=request.cookies("id")

sql="select * from detail where id= "&id

通用型sql注入(GET POST COOKIE)

id=request("id")

sql="select * from detail where id= "&id

四、通用防注入问题

1、没有过滤cookie,当使用request("id"),接收任何类型时,可注入;

2、Request.ServerVariables("QUERY_STRING"),可以过滤单引号’,但是不能过滤URL编码%27,从而可以绕过;

3、记录文件为ASP,通过注入一句话,访问记录文件,从而获取webshell权限。

关于我:一个网络安全爱好者,致力于分享原创高质量干货,欢迎关注我的个人微信公众号:Bypass--,浏览更多精彩文章。

五、bypass问题

绕过关键字和单撇号过滤

MSSQL CHAR()函数

用/*fdfd*/代替空格,如:UNION/**/select/**/use from user

用/**/分割敏感词,如:U/**/NION/**/SE/**/LECT/**/user from user

0x730079007300610064006D0069006E00 =hex(sysadmin)

注入的参数为 ID=49 And [查询条件],即是生成语句: 
Select * from 表名 where 字段=49 And [查询条件]

ASP代码审计学习笔记-1.SQL注入的更多相关文章

  1. SQL反模式学习笔记21 SQL注入

    目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...

  2. CTFHub Web题学习笔记(SQL注入题解writeup)

    Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...

  3. ASP代码审计学习笔记 -5.文件下载漏洞

    文件下载漏洞 漏洞代码: <% function download(f,n) on error resume next Set S=CreateObject("Adodb.Stream ...

  4. ASP代码审计学习笔记 -4.命令执行漏洞

    命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...

  5. ASP代码审计学习笔记 -3.上传漏洞

    1.ASP上传过程抓包分析: POST /4.asp HTTP/1.1 Host: 192.168.1.102 User-Agent: Mozilla/5.0 (Windows NT 10.0; WO ...

  6. ASP代码审计学习笔记 -2.XSS跨站脚本

    XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...

  7. SQLMAP学习笔记1 access注入

    SQLMAP学习笔记1  access注入 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支持MySQL.Oracle.PostgreSQL.Microsoft S ...

  8. Oracle学习笔记三 SQL命令

    SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)  

  9. IIS安全工具UrlScan介绍 ASP.NET 两种超强SQL 注入免费解决方案( 基于IIS,使用免费工具) 批改或隐藏IIS7.5的Server头信息 移除X-Powered-By,MVC,ASP.NET_SessionId 的 HTTP头或者cookie名称

    微软给了我们一个很好的工具用来使IIS安全的运行-------UrlScan,下面是它的配置文件介绍 [options]UseAllowVerbs=1                ; 若为1,则使用 ...

随机推荐

  1. Python+Django+js+echarts引入本地js文件的操作方法

    1. 选择正确的echarts.js,开发版选择echarts.baidu.com上的源码版,避免出现问题 2. 在项目主目录中新建static文件夹,里面建立js.css.images文件夹 3. ...

  2. Linux 完整的修改用户名,用户组的方法记录

    今天将虚拟机内所有的用户都是统一规划自己的名字,方便识别操作,特记录相关修改Linux 用户名以及修改用户组的方法 第一种方式,直接改相关文件: /etc/passwd 如图所示,改为自己想用户名,描 ...

  3. wm8976 codec

    root@phyCORE-AM335x:~ amixer controlsnumid=38,iface=MIXER,name='Headphone Playback Switch'numid=39,i ...

  4. Maven_POM配置详解

    本文转载,方便以后查阅,转载地址:http://blog.csdn.net/ithomer/article/details/9332071 <project xmlns="http:/ ...

  5. 可能是目前最完整的前端框架 Vue.js 全面介绍

    Vue.js 是一个JavaScriptMVVM库,是一套构建用户界面的渐进式框架. 摘要 2016年最火的前端框架当属Vue.js了,很多使用过vue的程序员这样评价它,“vue.js兼具angul ...

  6. 将DataFrame数据如何写入到Hive表中

    1.将DataFrame数据如何写入到Hive表中?2.通过那个API实现创建spark临时表?3.如何将DataFrame数据写入hive指定数据表的分区中? 从spark1.2 到spark1.3 ...

  7. C# - 简单介绍TaskScheduler

    task Scheduler根据定义 The task Scheduler by the definition blurb. “Is the class where the usage context ...

  8. 在CentOS上以源码编译的方式安装Greenplum数据库

    集群组成: 一台主机,一台从节点. 系统环境: 操作系统:CentOS 7,64位,7.4.1708(/etc/redhat-release中查看) CPU:AMD Fx-8300 8核 内存:8GB ...

  9. 【转】【MFC】 StretchBlt绘图图像失真

    MFC中位图伸缩函数StretchBlt在对图片进行缩放时会造成严重的图片失真. 在了解解决方法前先巩固下StretchBlt的用法: StretchBlt 函数功能:函数从源矩形中复制一个位图到目标 ...

  10. Intellij IDEA:maven的本地仓库问题

    不知是否我个人的问题,Intellij IDEA中设置的 maven本地仓库的位置 经常失效,动辄变回默认的路径(~/.m2/repository),然后疯狂下载内容. 很抓狂! 今天认真思考了一番, ...