对某博客的代码审计在gitee上面找了一个个人博客项目,来进行实战代码审计,主要还是学习为主技术菜菜,哪里错误希望师傅们指正
1、SQL注入先了解Java Web中的数据传输流程
graph TB id1(Controller.java 处理前台发送的请求)id1-->id2(Service.java 定义接口_业务逻辑)id2-->id3(ServiceImpl.java 对接口函数进行实现)id3-->id4(Mapper.java Mapper接口)id4-->id5(Mapper.xml 写sql语句查询数据库)查SQL注入可以从Mapper看起
graph LR id0(SQL语句)-.拼接.->id1id1(Mapper)-->id2(Impl)id2-->id3(Service)id3-->id4(Controller)
1.1 Mapper层:看到存在拼接函数form,接着往上查,Ctrl+鼠标左键(ArticleSqlProvider)
文章插图
文章插图
这里要理解Mybatis @SelectProvider
@SelectProvider(type=xxxx.class,method=”xxxx”) 可以理解为:
用自定义的provider类构造SQL语句
属性详解:type 属性用于指定获取sql语句的指定类method 属性用于指定类中要执行获取sql语句的方法
1.2 Impl层:Ctrl+左键(getArticleListByCondition)到达Impl层文章插图
1.3 Service层看到implements 实现接口IPostsService
Ctrl+左键(IPostsService)到达Service层
【Java代码审计之实战某博客】
文章插图
1.4 Controller层Ctrl+左键(getPostListByArticleCondition)到达Controller层
到这里之后就能看到form参数的来源页面,是通过name来获得参数
文章插图
文章插图
1.5、验证漏洞找到界面http://127.0.0.1/postsearch
添加参数http://127.0.0.1/postsearch?name=1,放到sqlmap去跑
文章插图
推荐阅读
- java常用注解校验参数
- <三>从编译器角度理解C++代码编译和链接原理
- 【Java8新特性】- Optional应用
- Java 最长公共前缀
- 一键生成通用高亮代码块到剪贴板,快捷粘贴兼容 TT/WX/BJ 编辑器
- 支持 Java 8/11/17/19 的框架,Solon v1.10.5 版本发布
- Java Style的C++容器流式处理类
- C++和Java多维数组声明和初始化时的区别与常见问题
- SpringBoot-JavaMailSender接口实战
- GitLab私有化部署 - CI/CD - 持续集成/交付/部署 - 源代码托管 & 自动化部署