SQL注入攻击 - JDBC

  SQL注入是一种常见的Web应用程序安全漏洞,攻击者利用这种漏洞通过在输入字段中插入恶意SQL语句来执行非授权的数据库操作。这可能导致数据泄露、数据损坏或者完整性受损
  JDBC(Java Database Connectivity)是一套用于在Java程序中操作关系型数据库的API。它提供了一种标准的Java方法来连接和执行SQL查询,从而实现与数据库的交互

特殊场景:预编译下,order by下的sql注入问题

  • 拼接注入
  • 预编译写法
  • 白名单过滤

可选排序字段 id、username、password

预编译下 ordery by排序失效 使用默认排序

tips
SQL语句执行顺序:
	FROM: 指定查询的数据表,开始查询过程。
	JOIN: 执行表的关联操作(如果有),将不同表中相关的行组合在一起。
	WHERE: 对行进行筛选,只选择符合指定条件的行。
	GROUP BY: 按照指定的列对结果进行分组,通常与聚合函数(如SUM、AVG等)一起使用。
	HAVING: 对分组后的结果进行筛选,类似于WHERE,但作用于分组后的结果集。
	SELECT: 选择要查询的列或表达式,生成最终的结果集。
	DISTINCT: 对结果集进行去重操作,仅保留唯一的行。
	ORDER BY: 对结果集按照指定的列进行排序操作,可以是升序或降序。
	LIMIT: 对结果集进行分页操作,限制返回的行数。
                                            
测试结果

                                        

漏洞代码

特殊场景:使用%和模糊查询-like

  • 拼接注入
  • 预编译写法
测试结果

                                        

漏洞代码

特殊场景:Limit 注入

  • 拼接注入
  • 预编译写法
测试结果

                                        

漏洞代码