廈門市網(wǎng)站建設(shè)公司廈門百度推廣開戶
標(biāo)題:貸齊樂系統(tǒng)最新版SQL注入(繞過WAF可union select跨表查詢)
內(nèi)容:
一,環(huán)境部署
二,源碼分析
三,sql注入
總結(jié):
[回到頂部](#article_top)
一,環(huán)境部署
本漏洞由于是2015年爆出的,所以這里源碼使用的PHP版本不支持7版本,這里我們可以使用PHP5.4.45版本,只需小皮進(jìn)行下載更改即可:
1.1 安裝phpstudy

使用php5.4.45版本

將源碼解壓放在phpstudy的WWW目錄下

配置連接數(shù)據(jù)庫

創(chuàng)建數(shù)據(jù)庫ctf,并且建立users表

插入數(shù)據(jù)

二,源碼分析
2.1 第一道WAF分析

第一層WAF: 包含點(diǎn),單引號,星號等等,一旦包含直接刪除非法字符,然后又注釋掉了一系列東西,這是第一個(gè)WAF防御。
2.2 第二道WAF分析

GET/POST/REQUEST/COOKIE都會(huì)經(jīng)過這個(gè)替換str_replace(array(‘&’, ‘"’, ‘<’, ‘>’,‘(’,‘)’), array(‘&’, ‘"’, ‘<’, ‘>’,‘(’,‘)’), $string),
三,sql注入
3.1 注入思路
輸入http://localhost/daiqile/demo.php?id=1&username=2&password=3

發(fā)現(xiàn)主要是進(jìn)行了一個(gè)使用問號來進(jìn)行的分割,分割為了兩個(gè)數(shù)組,數(shù)組0是路徑uri,數(shù)組1即為傳入的參數(shù)。全是explode的功勞

思路:讓第一道WAF檢測不到惡意字符,再通過第二道WAF的覆蓋,從而將惡意字符傳入到REQUEST中,其實(shí)也就可以繞過WAF,完成注入了
再根據(jù)PHP下劃線特性
這里我們需要了解PHP的一個(gè)小特性,那就是自身在進(jìn)行解析的時(shí)候,如果參數(shù)中含有” “、”.”、”[“這幾個(gè)字符,那么會(huì)將他們轉(zhuǎn)換為下劃線
所以我們可以利用這個(gè)特性,讓第一道WAF解析一個(gè)正常的參數(shù),第二道WAF來解析另一個(gè)惡意字符的參數(shù)從而完成覆蓋注入。
3.2 開始注入
尋找回顯點(diǎn)
我們可以看到是第二個(gè)字段進(jìn)行的回顯,所以我們就在第二個(gè)字段進(jìn)行注入。
爆庫名
爆出所有的庫名
爆表名
爆字段名
查flag
總結(jié):
1.HTTP參數(shù)污染(HPP):PHP只接收同名參數(shù)的最后一個(gè)值,這涉及到HTTP參數(shù)污染的問題。也就是說,如果一個(gè)請求中包含多個(gè)同名參數(shù),PHP會(huì)忽略前面的,只使用最后一個(gè)。
2.PHP特性:在GET請求中,如果參數(shù)的鍵(key)包含點(diǎn)號(.),PHP會(huì)自動(dòng)將其轉(zhuǎn)換為下劃線(_)。例如,參數(shù)i.d會(huì)被轉(zhuǎn)換為i_d。
3. R E Q U E S T 數(shù)組: _REQUEST數(shù)組: R?EQUEST數(shù)組:_REQUEST數(shù)組會(huì)按照PHP的接收方式來處理參數(shù),如果存在i_d和i.d這樣的參數(shù),PHP會(huì)將它們都轉(zhuǎn)換為i_d,并且只接收最后一個(gè)參數(shù)的值。因此,如果攻擊者將惡意代碼放在第二個(gè)參數(shù)中,第一個(gè)參數(shù)即使被WAF檢測到,也不會(huì)影響最終的請求數(shù)據(jù),從而繞過了WAF的防護(hù)。