SQL 注入攻击_3 | 学习笔记

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

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

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


SQL 注入攻击_3


内容介绍:

一、information_schema

二、查询数据库名,表名 information_schema.tables

三、查询数据库库名、表名、字段名


一、information_schema

MySQL 中,把 information_schema 看作是一个数据库,确切说是信息数据库。

其中保存着关于 MySQL 服务器所维护的所有其他数据库的信息。如数据库名,数据库的表,表栏的数据类型与访问权 限等。

INFORMATION_SCHEMA 中,有数个只读表。它们实际上是视图,而不是基本表,因此,你将无法看到与之相关的任何文件。


二、查询数据库名,表名

1information_schema.tables

俗称数据库字典,其保存的是数据库中表、库等等信息。它没有数据,仅仅只保存了数据库。

2、TABLES表:

提供了关于数据库中的表的信息(包括视图)。详细表述了某个表属于哪个 schema,表类型,表引擎,创建时间等信息。是 show tables from schemaname 的结果取之此表。

3COLUMNS 表:

提供了表中的列信息。详细表述了某张表的所有列以及每个列的信息。是 show columns from schemaname.tablename 的结果取之此表。

root@owaspbwa~# umount /proc -l

root@owaspbwa:~# free -m

Cannot find /proc/version - is /proc mounted?

root@owaspbwa:~# uptime

Cannot find /proc/version - is /proc mounted?

root@owaspbwa:~# mount proc /proc/

mount: you must specify the filesystem type

root@owaspbwa:~# mount -t proc proc /proc/

root@owaspbwa:~#

因为要知道的信息都在 information_schema 中,所以有:

Database changed

mysql> show tables;

image.png

注:yazd 是库的名字。

2、查询数据库库名,表名 information_schema. tables

mysql> select * from information_schema, TABLES\G

mysql> select DISTINCT TABLE_SCHEMA from information_schema.TABLES;

mysql> select TABLE_SCHEMA, TABLE_NAME from information_schema. TABLES\G

mysql> select TABLE_SCHEMA, GROUP_ CONCAT(TABLE_NANE) from information_schema. TABLESGROUP BY TABLE_SCHEMA\G

mysql> select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='dvwa';

image.png

3、若查“wordpress”库,只需要改为如下:

mysql> select TABLE_NAME from INFORMATION_SCHEMA.tables where TABLE_SCHEMA='wordpress';

image.png

4、若要查随机一个表“proxy”,只需要改为如下:

mysql> select TABLE_name from information_schema.TABLES where TABLE_SCHEMA='proxy';

image.png

5、注意:

1)、“* from information_schema, TABLES\G”这条命令是查看里面的所有信息。

2)、“select DISTINCT TABLE_SCHEMA from information_schema.TABLES;”这条命令等价于 show_databases

3)、TABLE_SCHEMA:库名。 TABLE_NAME:表名。

4)、“DISTINCT TABLE_SCHEMA”对库名进行去重。

5)、“GROUP_ CONCAT”做到将库与表进行分组。使得内容看起来更直观。

6)、Tables 表中放的为整个数据库中所有的表。

e.g.

*********679. row*********

这里的679为所有库加起来的表是679

TABLE_CATALOG: NULL

TABLE_SCHEMA: yazd                  库名

TABLE_NAME: yazduserperm         表名(任何表在此都有记录)

TABLE_TYPE: BASE TABLE

ENGINE: MyISAM

VERSION: 10

ROW_FORMAT: Fixed

TABLE_ROWS: 32


三、查询数据库库名、表名、字段名 information_schema.columns

mysql> select * from information_schema. colunns\G             //*字段获得列的信息。

mysql> select column_name from INFORMATION_SCHEMA. columns;  //column_name获得列的名字。

mysql> select column_name from INFORMATION_SCHEMA.

columns where table_schema='dvwa'and table_name='users';mysql>selectcolumn_namefromINFORMATION_SCHEMA.colunnswheretable_name="USER_PRIVILEGES'      

//table_name 查用户的权限表

mysql> selectcolumn_namefromINFORMATION_SCHEMA.columnswheretable_name='SCHEMA_PRIVILEGES'

在查询过程中,需要知道每一个条件,进行叠加,让其把这个表中的所有记录反馈出来,若想知道具体库具体表,则需要知道该库名及表名,得出该字段。若资料不够也可以用数字来凑。

e.g.

*********4682.row*********

TABLE_CATALOG: NULL

TABLE_SCHEMA: yazd                库名

TABLE_NAME: yazduserprop          表名

COLUMN_NAME(列): propValue      字段名

1、利用库表求得列,方法如下:mysql>selectCOLUMN_NAMEfrominformation_schema.columnswhereTABLE_SCHEMA=‘proxyandTABLE_NAME=logs;

没有权限只能访问该用户所授权的库。Information 看到的不是一切,需要看权限。

//TABLE_SCHEMA 库名

//TABLE_NAME 表名

//COLUMN_NAME 字段名

2SQL 注入流程

1.判断是否有 SQL 注入漏洞;

2.判断操作系统、数据库和 web 应用的类型;

3.获取数据库信息,包括管理员信息及拖库;

4.加密信息破解, sqlmap 可自动破解;

5.提升权限,获得 sq1 -shellos-shell、登录应用后台。

相关实践学习
每个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