Java代码审计之实战某博客

对某博客的代码审计在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)

Java代码审计之实战某博客

文章插图

Java代码审计之实战某博客

文章插图
这里要理解Mybatis @SelectProvider
@SelectProvider(type=xxxx.class,method=”xxxx”) 可以理解为:
用自定义的provider类构造SQL语句属性详解:
type 属性用于指定获取sql语句的指定类method 属性用于指定类中要执行获取sql语句的方法1.2 Impl层:Ctrl+左键(getArticleListByCondition)到达Impl层
Java代码审计之实战某博客

文章插图
1.3 Service层看到implements 实现接口IPostsService
Ctrl+左键(IPostsService)到达Service层
【Java代码审计之实战某博客】
Java代码审计之实战某博客

文章插图
1.4 Controller层Ctrl+左键(getPostListByArticleCondition)到达Controller层
到这里之后就能看到form参数的来源页面,是通过name来获得参数
Java代码审计之实战某博客

文章插图

Java代码审计之实战某博客

文章插图
1.5、验证漏洞找到界面http://127.0.0.1/postsearch
添加参数http://127.0.0.1/postsearch?name=1,放到sqlmap去跑
Java代码审计之实战某博客

文章插图

    推荐阅读