BlueCms 1.6代碼審計之Union 注入

前言:

非常基礎的代碼審計練習的cms系統,適合有php基礎的審計新手練習,當然了該套cms還有不少的其他漏洞,這裏該篇文件只是介紹Union注入。

準備環境:

phpstudy工具
BlueCms1.6源碼
Sublime編輯器安裝了Ctags插件

代碼審計:

首先主頁面index.php代碼如下,可以看到開頭便引用了2個文件,一個是include/common.inc.phpinclude/index.fun.php文件。在這裏插入圖片描述
這裏做好標記即可,隨後全局搜索$_GET函數,看通過該函數接收的參數,進行審計,運氣
很好第一個文件裏面的參數ad_id貌似沒有進行過濾,我們找到文件點進去。
在這裏插入圖片描述
找到該文件點擊進入,代碼如下:
看到最開始也是包含了文件/include/commonc.inc.php繼續看下面的代碼,得知當前頁面確實是對參數ad_id進行過濾,首先通過過函數trim()將變量$ad_id的首位去空,如果參數ad_id的值爲空的話,則直接輸出Error。否則就進入下面的語句進行判斷,並且通過函數str_replace()過濾雙引號字符等,但是通過sql代碼得知,當前語句中參數$ad_id是數字型的,所以我們構造的sql語句是不需要進行閉合的,那麼下面的str_replace()函數沒太大用,最後輸出$ad_contenet的值。
在這裏插入圖片描述
接下來進入包含文件/include/commonc.inc.php看看該文件做了什麼操作。
可以判斷該文件應該是全局文件,通過if語句判斷是否開啓了GPC轉義,如果未開啓GPC轉義,則所有的$_POST,$_GET,$COOKIE,$REQUEST方法都進入到了deep_addslashes()函數。

在這裏插入圖片描述
跟進deep_addslashes()函數,代碼如下:
將傳入的參數首先判斷是否爲數組,如果是數組則進行遍歷,最後進行addslashes()轉義。
在這裏插入圖片描述
上面也和大家強調過了ad_js.php文件中$ad_id的注入是整型注入的,所以是不需要閉合單引號,那麼這裏的函數轉義對我們其實也沒影響的。接下來回到文件ad_js.php找到對應的函數進行跟蹤,可以看到語句進入了函數getone()函數中。
在這裏插入圖片描述跟進getone()函數,查看函數內容,傳入的參數是$sql,就是sql語句,但是執行卻是在函數query()中執行的。

在這裏插入圖片描述
跟進函數query() 查看函數內容得知傳入sql語句,如果sql語句執行錯誤,則進入函數dbshow()中返回錯誤信息,跟進dbshow()函數

在這裏插入圖片描述

dbshow()函數的代碼如下:
就是一個返回錯誤信息的功能,如果sql語句執行出錯,直接返回sql語句。
在這裏插入圖片描述
那麼此時我們打開瀏覽器,在本地搭建好BlueCms後,瀏覽器訪問構造參數爲ad_id=1'看到瀏覽器確實是返回了錯誤的信息,並且直接將執行的sql語句也進行了返回

在這裏插入圖片描述由於是整型注入,所以我們直接構造語句:-1 union select 1,2,3,4,5,6,(select concat(admin_name,0x7e,pwd) from blue_admin) --+就可以爆出後臺管理賬號密碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章