4.联合查询注入
联合注入原理
联合查询,两边的字段数要相同,不然会报错
就像这样
select from users where user_id=1 union select * from guestbook
上述联合查询语句可以拆分为两个查询语句
select from users where user_id=1
和
select from guestbook
接下来要确定两个查询语句的字段数
select from users where user_id=1
字段数(注入点)为8
select * from guestbook
的完全语句为
select * from guestbook where comment_id = 1
字段数为3
利用联合查询创造多个查询点,然后将第二个查询语句的数字替换成为各种函数,一次性进行多个查询
限定语句导致的错误
当联合查询两个以上语句时,如果将comment_id设定为1的话,那除了第一个语句外的后面的所有语句都将不会回显出来
联合注入攻击
白盒测试流程
攻击开始
判断为字符型还是数字型
这里只是将Id更改了,没有其他变化,不像数字型注入漏洞
改为字符型试探
当输入值改为1' and '1'='2时,页面直接崩溃,说明这里有一个字符型注入漏洞
判断字段数(注入点)
注入点确定,这里只有两个注入点
数据库连接账户为localhost
连接的数据库名称为dvwa
版本为5.7.33
查询对方数据库中符号的表示方法
就会生成对应的字符
这样可以将数据库吐出来的数据更加美观一些
黑盒测试是不知道数据库内部结构和表名的
但数据库的表的数据都会保存在information_schema这个表中,我们只要将这个一定会存在的表,给他破解掉,就可以获得这个数据库中的全部表名了
黑盒测试流程
获取表名
select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1
将注入点数字替换为这个语句
得到第一个表名
将注入点写入这个语句
select TABLE_NAME from information_schema.TABLES where TABLE_SCHEMA=database() limit 1,1
得到第二个表名
根据表名查询字段
通过字段查询内容