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代碼審計之實戰某博客

文章插圖

    推薦閱讀