关于SQL注入的一些总结

1. 找到注入点

判断方法

  1. 在地址后面加入'判断
  2. ;and 1=1 ;and 1=1 进行测试

2.信息收集

判断数据库类型

常见的数据库

环境数据库
aspAccess/SQLServer
phpmysql
jspOracle

判断类型

  1. Access数据库
    1.1 报错信息
    在注入点上加入',返回错误信息中,如果是Microsoft JET Database Engine错误'80040e14'的话,则说明网站所用的数据库是Access数据库。
    1.2 逻辑差异
    http://wwww.***.com?id=1 and (select count(*) from sysobjects)>0 //sysobjects 是SQL表 http://www.***.com/id=1 and (select count(*) from msysobjects)>0//msysobjects 是access
    如果加sysobjects和加msysobjects的SQL语句后,网页显示都不正常,或者加msysobject后的网页显示正常,则说明是ACCESS数据库。反之,则说明用的是SQLServer数据库。
    1.3 对len()和chr()函数支持
    如果目标数据库同时支持len()函数和chr()函数,且不支持length()和char()函数,则很可能是Access数据库。
    支持length()和char()函数的很可能是MYSQL数据库
  2. Mysql
    3.1 对substring和substr的支持
    在mssql中可以调用substring。oracle则只可调用substr

基于符号判断
/*是MySQL中的注释符,返回错误说明该注入点不是MySQL,继续提交如下查询字符:

--是Oracle和MSSQL支持的注释符,如果返回正常,则说明为这两种数据库类型之一。继续提交如下查询字符:

;是子句查询标识符,Oracle不支持多行查询,因此如果返回错误,则说明很可能是Oracle数据库。

在注入点后加(必须为注入点);--(一个分号,两个横线),例如:http://xxxx/article/as.asp?id=1;–。如果返回正常的话,说明数据库是MSSQL。在MSSQL数据库中;和–都是存在的,;用来分离两个语句,而–就是注释符,它后面语句都不执行。如果返回错误,基本可以肯定是ACCESS数据库了。

以上参数都是int的时候,如果是字符型的话首先在参数后面加上单引号,然后再在查询语句后加上;–

  1. 判断数据库版本:versions(); @@version

还没写的完,今天先到这。背会单词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值