SQL注入--显错注入

SQL注入核心:用户输入的数据被当做数据库代码执行
一,寻找SQL注入
寻找SQL注入是看当前页面与数据库交错的点,如 id=1
二,判断是否存在注入
先查看 id=2 页面的内容,然后id=3-1 看看回显的页面是不 id=2 的页面,如果是说明存在SQL注入
三,判断字段数
order by 1(正常) order by 2(正常)order by 3(异常)说明仅仅存在两个字段
判断字段数的目的是:让后面的联合查询语句的显错位和字段数相同,如果和字段数不相同会报错
四,判断显错位
?id=1 and 2=1 union select 1,2通过配和联合查询知道几个字段数几个显错位,and 2=1 语句是为了让前面报错,后面的联合查询语句数据出来。
判断显错位是为了,命令在显错位才能被执行,1(填充位),2(显错位)
五,查询命令
(一)查询库名 ?id=1 and 2=1 union select 1,database() 就可以查询库名
information_schema(mysql数据库5.0及以上版本,自带数据库,他记录了mysql数据库下所有的数据库名,表名,列名信息),大多数常见的数据库里面都会自带这一个库
table_name表名信息
table_schema (数据库名)
里面记录了一些信息(这里我就不开虚拟机了,上面的的table_name和table_schema,都是在这个数据库存在的)
(二)查询表名
union select 1,table_name from information_schema,tables where table_schema='库名'
因为通过前面的语句查到库名所以这里的意思是:库名等于(查询的库的名字)的表是哪个
因为一个库里有很多表
所以查看其他表里的内容用
limit 0,1 这是查看第一条内容
limit 1,1 这是查看第二条的内容(以此类推)(还有一个查询的语句,但是楼主不常用也忘了,用limit 很保险)
(三)查询字段名
column_name (字段名) 这个也是information_schema库里的(有兴趣的小伙伴可以自己去查看)
【SQL注入--显错注入】union select 1,column_name from information_schema.columns where table_name='表名' table_schema='库名'
因为通过前面查询到了表名和库名,所以直接可以查询字段名,查看其他字段还是用 limit
(四)查询数据
union select 1,(字段名)from (表名)就可以直接查询数据
六,SQLmap(工具)
用sqlmap前要装一个python的环境,这个工具是基于python开发的(这里简单的介绍sqlmap,后面如果有时间在细讲)
SQL注入--显错注入
文章图片

就是这样的一个工具,可以跑出存在什么库,表,字段,数据









    推荐阅读