首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【好靶场】Java代码审计之SQL注入(一)

【好靶场】Java代码审计之SQL注入(一)

原创
作者头像
用户1466950
发布2025-09-09 13:53:50
发布2025-09-09 13:53:50
1560
举报
文章被收录于专栏:好靶场好靶场

0x00 前言

从来没有那种很好用的靶场来学习Java代码审计,所以它来了,我们今天就会通过这个靶场来学习代码审计的内容。

这里是好靶场,我们会做出好的网络安全靶场。学了不练,等于白练,做练习就用好靶场。

https://github.com/haobachang-1/haobachangBlog/blob/main/README.md

本文需要在有一定Java基础的前提下进行,且掌握了基本的SQL手注的方式。

0x01 开启环境

开启环境

访问一下

0x02 审计利用分析

首先我们来看一下存在漏洞的源码,可以看到SQL语句是通过 + 号去拼接的

那么如果是+号拼接的话就会出现输入的'将前面的语句闭合,从而导致存在SQL注入。

根据提示进行测试,可以看到SQL注入是真实存在的。

接下来就需要各位去进行手注的练习了,比如order by 判断显示,等等,我们这里查询一个数据库名称。

查询Flag的事情就交给各位了。

徽章到手:

0x03 修复

我们再来看看安全代码。

安全代码使用了 PreparedStatement 预编译,从而规避了SQL注入。一般情况下预编译是可以规避大部分的SQL注入的。

科普:

PreparedStatement 是 Java JDBC 中的一个接口(继承自 Statement),主要用于执行预编译的 SQL 语句,其核心原理围绕 “预编译” 和 “参数化查询” 展开,相比普通的 Statement 具有性能优化和安全增强的特点。

使用 PreparedStatement 时,SQL 语句中用 ? 作为占位符代替具体参数(例如 SELECT * FROM user WHERE id = ?),这条 “带占位符的 SQL 模板” 会被提前发送到数据库服务器。

数据库收到后,会对 SQL 进行语法解析、语义检查、生成执行计划(这一过程称为 “预编译”),并将编译后的执行计划缓存起来。

0x04 总结

大家看了这个案列应该就知道一般Java中SQL注入的样子了吧,这里有一个潜在的内容,就是如何快速的在一个项目中发现SQL注入,大家可以进行通篇的查询executeQuery关键字。

我们在他的前后去找执行的SQL语句。从而达到快速发现SQL注入的目的。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0x00 前言
  • 0x01 开启环境
  • 0x02 审计利用分析
    • 徽章到手:
  • 0x03 修复
    • 科普:
  • 0x04 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档