ASP代码审计学习笔记-1.SQL注入
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注入的更多相关文章
- SQL反模式学习笔记21 SQL注入
目标:编写SQL动态查询,防止SQL注入 通常所说的“SQL动态查询”是指将程序中的变量和基本SQL语句拼接成一个完整的查询语句. 反模式:将未经验证的输入作为代码执行 当向SQL查询的字符串中插入别 ...
- CTFHub Web题学习笔记(SQL注入题解writeup)
Web题下的SQL注入 1,整数型注入 使用burpsuite,?id=1%20and%201=1 id=1的数据依旧出现,证明存在整数型注入 常规做法,查看字段数,回显位置 ?id=1%20orde ...
- ASP代码审计学习笔记 -5.文件下载漏洞
文件下载漏洞 漏洞代码: <% function download(f,n) on error resume next Set S=CreateObject("Adodb.Stream ...
- ASP代码审计学习笔记 -4.命令执行漏洞
命令执行漏洞: 保存为cmd.asp,提交链接: http://localhost/cmd.asp?ip=127.0.0.1 即可执行命令 <%ip=request("ip" ...
- 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 ...
- ASP代码审计学习笔记 -2.XSS跨站脚本
XSS漏洞: 漏洞代码: <% xss=request("xss") response.write(xss) %> 漏洞利用: 漏洞修复: Server.HTMLEnc ...
- SQLMAP学习笔记1 access注入
SQLMAP学习笔记1 access注入 Sqlmap是开源的自动化SQL注入工具,由Python写成,具有如下特点: 完全支持MySQL.Oracle.PostgreSQL.Microsoft S ...
- Oracle学习笔记三 SQL命令
SQL简介 SQL 支持下列类别的命令: 1.数据定义语言(DDL) 2.数据操纵语言(DML) 3.事务控制语言(TCL) 4.数据控制语言(DCL)
- IIS安全工具UrlScan介绍 ASP.NET 两种超强SQL 注入免费解决方案( 基于IIS,使用免费工具) 批改或隐藏IIS7.5的Server头信息 移除X-Powered-By,MVC,ASP.NET_SessionId 的 HTTP头或者cookie名称
微软给了我们一个很好的工具用来使IIS安全的运行-------UrlScan,下面是它的配置文件介绍 [options]UseAllowVerbs=1 ; 若为1,则使用 ...
随机推荐
- python URLObject url处理模块
1.需求来源 给一个url串,例如https://github.com/zacharyvoase/urlobject?spam=eggs#foo,想要截取串中某个部分,比如传输协议(https).服务 ...
- c#打印(转)
柴门闻狗吠,风雪夜归人.野旷天低树,江清月近人.香雾云鬟湿,清辉玉臂寒.莫愁前路无知己,天下谁人不识君.常将冷眼 看螃蟹,看你横行到几时.要在vs2005中实现最基本的打印文本基本上需要以下几个步骤 ...
- python content list(1--4)
part 1 python language 1. environment building and config 2. variable and data type 3. programming b ...
- C语言实现单链表(不带头结点)节点的插入
对单链表进行增删改查是最主要的操作.我在上一篇博客<C语言实现链表节点的删除>实现了删除单链表中的某个节点. 这里我们要来实如今某个位置插入节点.演示样例代码上传至https://gith ...
- Oracle 外键约束子表、父表
CREATE TABLE employees( employee_id NUMBER(6), last_name VARCHAR2(25) NOT NULL, ...
- linux中vim中文显示乱码
这里所说的都是全局设定,打开vimrc文件后,只需要在文件最后添加以下代码就可以了: set fileencodings=utf-8,gb2312,gbk,gb18030 set termencodi ...
- 释放Ubuntu/Linux系统cache,增加可用内存空间
某台式机Ubuntu内存共3G,但free的内存只有200M,无法满足scala的jvm需求. 注意用top命令查看才能看到真正的free内存.下面是查看真正内存使用量的另一种命令. watch -n ...
- 回调方法介绍之中国好室友篇(Java示例)
前言 在Java社区的各种开源工具中,回调方法的使用俯拾即是.所以熟悉回调方法无疑能加速自己对开源轮子的掌握.网上搜了一些文章,奈何对回调方法的介绍大多只停留在什么是回调方法的程度上.本篇文章尝试从回 ...
- Intellij IDEA:maven的本地仓库问题
不知是否我个人的问题,Intellij IDEA中设置的 maven本地仓库的位置 经常失效,动辄变回默认的路径(~/.m2/repository),然后疯狂下载内容. 很抓狂! 今天认真思考了一番, ...
- 【转载】C#进阶系列——动态Lamada
前言:在DDD系列文章里面,我们在后台仓储里面封装了传递Lamada表达式的通用方法,类似这样: public virtual IQueryable<TEntity> Find(Expre ...