java审计之ofcms(一)

简介: java审计之ofcms

搭建环境

Github地址如下:

"https://github.com/yuzhaoyang001/ofcms"

然后使用idea导入war包

d7a9d8f13fcf25fbead5ae1e81699f3f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

801974a2600db66e59a636ad9a4909a9_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

aac2821c724a5179a4401d083eae6569_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

配置tomcat

14a6e6c7a4e03cb0c133fb1909b5cff8_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后创建数据库

0a1f6145b8a3ac1805bb199f1ed87b53_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

运行sql文件

849eb418c443884a7fd296327206f58c_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

b15b0887add661e07e0eba6e3e805300_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后配置好数据库文件

bb57ce22c1d4ff8ea30c62b1fc2cba3f_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

根据自己安装的mysql版本配置pom.xml

e60e3233879b0284733a72ade48a71cd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

后台地址:http://localhost:8081/ofcms_admin_war/admin/login.html

账号,密码 admin / 123456

先大概过一遍功能点

因为前台看不到啥点所以就登录到后台观看

sql注入

e6af316765e77d9a1472d6fbe87dac22_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

在这里抓包

a1e291d05cfd63ec1448cef365d649cb_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

根据这个 找到 controller层

5d234331922c1403f25527837536b6dd_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

420c33c1875084bd78302db5728a3d9b_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

发现这里接收sql参数 然后update执行  我们打上断点来进行调试

随便输入一个

98a1ce5a3d25850ec0fa8465f83c6ad7_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

然后回到idea

ceee984680927c6a703375720c74c271_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

227bf6648b96ef71e78e188804eba64a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

可以看到外面输入的值

8d6f0f51c6251b501419c0cfbdf1e3d6_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

进入update函数

125a9ecd7a11960bb6dc7e5285b60580_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

继续

3dbec145cc01d5f9d9770b1cd065ff47_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

经过一直调试

8ff74a61657d83dbc8ac2e8d349012df_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

最后进入到这里执行  这里采用了预编译但是 是把整个sql语句进行预编译 不是把sql的参数 这样根本起不到效果

并且还进行了回显

10eca10e06b729b779806a4f3dd5484a_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

da389bd8aae3e8297ded9e7b3a4a556e_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png

用报错语句测试

因为是executeUpdate

所以只能用增删改的sql语句

update of_cms_ad set ad_id=updatexml(1,concat(1,user()),1)

d3ce74d4ce2d3de5757eee00e2a48faa_640_wx_fmt=png&wxfrom=5&wx_lazy=1&wx_co=1.png


相关文章
|
安全 Java API
Java审计之Freemarker模板注入漏洞
Java审计之Freemarker模板注入漏洞
10863 1
|
存储 XML SQL
Java审计之XSS篇
继续 学习一波Java审计的XSS漏洞的产生过程和代码。
178 0
Java审计之XSS篇
|
SQL 安全 前端开发
Java审计之SQL注入篇
本篇文章作为Java Web 审计的一个入门文,也是我的第一篇审计文,后面打算更新一个小系列,来记录一下我的审计学习的成长。
315 0
|
存储 Java 应用服务中间件
Java代码审计之jspxcms审计(三)
Java代码审计之jspxcms审计
485 0
Java代码审计之jspxcms审计(三)
|
Java
Java代码审计之jspxcms审计(二)
Java代码审计之jspxcms审计
261 0
Java代码审计之jspxcms审计(二)
|
存储 Java 数据库连接
Java代码审计之jspxcms审计(一)
Java代码审计之jspxcms审计
269 0
Java代码审计之jspxcms审计(一)
|
Java 测试技术 数据安全/隐私保护
|
XML 前端开发 JavaScript
|
9天前
|
Java
Java—多线程实现生产消费者
本文介绍了多线程实现生产消费者模式的三个版本。Version1包含四个类:`Producer`(生产者)、`Consumer`(消费者)、`Resource`(公共资源)和`TestMain`(测试类)。通过`synchronized`和`wait/notify`机制控制线程同步,但存在多个生产者或消费者时可能出现多次生产和消费的问题。 Version2将`if`改为`while`,解决了多次生产和消费的问题,但仍可能因`notify()`随机唤醒线程而导致死锁。因此,引入了`notifyAll()`来唤醒所有等待线程,但这会带来性能问题。
Java—多线程实现生产消费者
|
11天前
|
安全 Java Kotlin
Java多线程——synchronized、volatile 保障可见性
Java多线程中,`synchronized` 和 `volatile` 关键字用于保障可见性。`synchronized` 保证原子性、可见性和有序性,通过锁机制确保线程安全;`volatile` 仅保证可见性和有序性,不保证原子性。代码示例展示了如何使用 `synchronized` 和 `volatile` 解决主线程无法感知子线程修改共享变量的问题。总结:`volatile` 确保不同线程对共享变量操作的可见性,使一个线程修改后,其他线程能立即看到最新值。