當前位置:首頁 » 凈水方式 » intval過濾方法

intval過濾方法

發布時間: 2021-01-11 07:10:15

⑴ 如何發現php wangye loudong

0x01: 搜索所有的用戶可控變數(GET/POST/COOKIE/referer)
原因:所有用戶輸入都是有害的,代碼審計注重函數和變數,先看看在什麼地方會有輸入
可能出現的場景:
a) id=$_GET['id'];
可能存在的問題:
過濾的SQL注入:
WooYun: chshcms 程氏CMS V3.0 注射(已在官方演示站測試)

1

$id=trim($_GET["id"]);

//下面直接就進查詢語句了

1

if($db->query("update ".Getdbname('dance')." set CS_TID=".$tid." where cs_user='".$cscms_name."' and

當然,這是GET之後沒做過濾的情景
b) id=intval($_GET['id']);
可能存在的問題:intval對字元型無用,字元型變數是怎麼處理的呢?
如果字元型的addslashes,注意數字型盲注(見c2分析)
c) $tid=XX_Request("tid");
使用自己定義的安全過濾函數處理變數,很常見,很多框架都提供了解決方案,不過自己包裝一個也是很常見的
可能存在的問題:
c1) 有沒有忘記使用這個處理函數?
WooYun: chshcms 程氏CMS V3.0 注射(已在官方演示站測試)
$tid=CS_Request("tid"); //使用安全的CS_request addslash
$id=trim($_GET["id"]); //呵呵呵,曲項向天歌,CS_Request哭了

其實還是上面那個例子,自己忘了用這函數過濾了
c2) 函數本身是否安全?
WooYun: (新)程氏舞曲CMS 三步GETSHELL(實例演示+源碼詳析)
$t_Val = $magic?trim($_GET[$pi_strName]):addslashes(trim($_GET[$pi_strName]));

使用了addslashes,這就意味著逃脫單引號難度加大,需要尋找沒有單引號保護的語句注入
addslashes只處理單引號和斜杠,因此無法過濾形如 134 and 1=1 這樣的注射語句,請自行網路無單引號盲注
在下面的語句中,$cscms_name就是有單引號保護的,而$id是沒有單引號保護的
$db->query("update ".Getdbname('xiaoxi')." set CS_DID=1 where CS_ID=".$id." and cs_usera='".$cscms_name."'");

所以id引發了盲注
c3) 過濾函數能否滿足業務邏輯的特殊需求?
負數訂單啦,自己修改自己的投票數啦,各種業務邏輯上的問題都有可能發生
非常可惜,這個我還沒撞見過,如果以後撞見再更新到文章里
d) 不要忘記我們能控制referer等變數
可能存在的問題:
雖然發現GET/POST都過濾處理了,但是referer和cookie容易被忽視
$_SERVER["HTTP_REFERER"] 例子:
WooYun: MacCMS 6.x referer處理不當引發注射
很遺憾,這個截至今日還未公開,等公開了大家再去看吧
$_COOKIE['xxx'] 例子:
WooYun: TCCMS全版本COOKIE注入(已演示證明)
$sql="select password from ".$_Obj->table." where id=".$_COOKIE['userId'];
情況和GET時是一樣的,不過注入時操作起來稍微麻煩些,SQLMAP教程我就不粘貼到這里了,不會COOKIE注射的請網路
e) 還有其他的輸入變數,請各路高手帶著實例補充!
目前,我們了解了程序總體上是如何處理用戶輸入的
0x02:單獨搜索$_COOKIE,分析身份認證時的邏輯
原因:身份驗證屬於業務邏輯中「高危」的部分,大部分的高危漏洞都出在這里
可能出現的場景:
a) 沒有cookie處理,直接全是session
那就等之後通讀代碼時直接去讀認證演算法好啦
b) 認證演算法中強度太弱(用可控的COOKIE算來算去),降低了偽造身份的難度
WooYun: (新)程氏舞曲CMS 三步GETSHELL(實例演示+源碼詳析)
第二步偽造身份時
elseif($_COOKIE['CS_Login']!=md5($_COOKIE['CS_AdminID'].$_COOKIE['CS_AdminUserName'].$_COOKIE['CS_AdminPassWord'].$_COOKIE['CS_Quanx'])){

有什麼意義呢?COOKIE我們能控制,當然之後程序有別的驗證,這里只是舉例,就這一句而言沒有意義
實際上漏洞里這個CMS這個演算法,後面只是在認證時沒有用到安裝時admin寫死在config里的驗證碼而已,不過難度已經降下來了
c) 直接能繞過
如果情況b 沒有其他驗證了,那就繞過了
目前我們只是驗證了登陸時的邏輯,之後還需分析許可權的縝密程度
0x03:搜索所有的文件操作函數,分析其邏輯
原因:文件操作函數屬於敏感函數,往往業務邏輯上的漏洞可能導致任意文件操作
可能出現的場景:
a) 任意文件下載
WooYun: appcms 最新版 1.3.708 任意文件下載
<?php
if(isset($_GET['url']) && trim($_GET['url']) != '' && isset($_GET['type'])) {
$img_url = base64_decode($_GET['url']);
$shffix = trim($_GET['type']);
header("Content-Type: image/{$shffix}");
readfile($img_url);
} else {
die('image not find');
}
?>

PS:由於是業務邏輯上的問題,是沒辦法通過自動掃描發現的,而且針對SQL和HTML的過濾是起不到特大作用的
任意文件讀取的最大作用是讀config.php 和各種系統的敏感文件(如何爆物理目錄?請看0x04)
b) 任意文件寫入
WooYun: CSCMS V3.5 最新版 後台命令執行GETSHELL(源碼詳析)

任意文件寫入的最大應用就是寫馬了,最大障礙是繞過過濾的HTML字元比如: <>,解決方式是大量應用base64
c) 任意文件刪除
很遺憾,還沒撞見過,要是撞見一個該多好
任意文件刪除的作用可以是刪除install.lock,然後重裝CMS
d) 其他操作,求補充
文件操作可以結合爆目錄
0x04:爆物理目錄
原因:上一小節我們可能能夠任意操作文件,但沒拿到網站的物理目錄地址,的確可以用黑盒不停地試圖讀取 c:\boot.ini 和 /etc/passwd 之類的來試圖判斷,但是這么弄實在不可靠
怎麼辦:使用php vulnerability hunter 自動掃描就好了,這個確實可以偷懶用工具掃描,因為這個爆目錄危害實在太低了,必須配合其他漏洞才有危害,所以一般CMS都會有這種漏洞,我是說能掃描出來的漏洞
WooYun: appcms 最新版 1.3.708 任意文件下載
如果你不知道物理路徑,你可以試著用工具掃描一下,然後再讀取
0x05:搜索eval,preg_replace什麼的,看看有沒有命令執行
原因:能直接執行PHP代碼,也就是說可以寫一句話木馬了(file_put_contents),當然,要找可寫目錄
這地方我一直沒能找到例子,沒有親自實踐過,求各路高手帶實例提供幾個?
0x06:可以開始通讀代碼了,從index開始,注意的是數據的傳輸和輸出函數
原因:常見模式化的漏洞都不存在的話,就要分析整個系統了,因此需要完全而徹底地去做審計,這樣比繼續單獨搜索變數然後跟蹤更加省力一些
可能出現的場景:
a) 之前的過濾全白費了
WooYun: YXcms1.2.0版本 存儲式XSS(實站演示+源碼分析)
沒公開,等公開再更新文章,這是一個存儲式xss
b) 二次注入
由於二次開發中從資料庫里取出的值沒有過濾,導致注射,由於沒有直接從用戶輸入中獲得,所以之前步驟很難發現
哎呀,求各路高手提供個示例呀,我這個自己也沒有碰到過丫
c) 平行許可權、任意投票、越權訪問 等等 等等 一大堆
0x07 總結
目前就知道這么些,希望能對剛接觸PHP代碼審計漏洞挖掘的新手有點幫助,由於我也是剛開始學習PHP漏洞挖掘不久,希望大家能廣泛提供學習的建議以及思路,也請批評指正文章中不妥之處,更希望高手們能帶著示例來指導。

⑵ 如:$id=xxxx php中關於ID如何嚴格過濾才進入SQL查詢啊用intval還是(int)還是其它要代碼啊

// intval 會將抄非int型的值轉為0, 將 332abc 這樣的字元串轉為332
$id = intval($_GET['id']);

if($id>0){
$sql = 'select * from user where id='.$id;
//或者
$sql = "select * from user where id=$id";
//注意 單引號和雙引號的區別
mysql_query($sql,$conn);

}

⑶ thinkPHP3.2中intval過濾超過9位的數字問題

字元復串制函數:md5,strip_tags...等 filter_list: int boolean float validate_regexp validate_url validate_email validate_ip string stripped encoded special_chars unsafe_raw email url number_int number_float magic_quotes callback

⑷ 如何在PHP中成功的過濾危險HTML的代碼

//php批量過濾post,get敏感數據
if(get_magic_quotes_gpc()){
$_GET=stripslashes_array($_GET);
$_POST=stripslashes_array($_POST);
}

functionstripslashes_array(&$array){
while(list($key,$var)=each($array)){
if($key!='argc'&&$key!='argv'&&(strtoupper($key)!=$key||''.intval($key)=="$key")){
if(is_string($var)){
$array[$key]=stripslashes($var);
}
if(is_array($var)){
$array[$key]=stripslashes_array($var);
}
}
}
return$array;
}
//--------------------------

//替換HTML尾標簽,為過濾服務
//--------------------------
functionlib_replace_end_tag($str)
{
if(empty($str))returnfalse;
$str=htmlspecialchars($str);
$str=str_replace('/',"",$str);
$str=str_replace("\","",$str);
$str=str_replace("&gt","",$str);
$str=str_replace("&lt","",$str);
$str=str_replace("<SCRIPT>","",$str);
$str=str_replace("</SCRIPT>","",$str);
$str=str_replace("<script>","",$str);
$str=str_replace("</script>","",$str);
$str=str_replace("select","select",$str);
$str=str_replace("join","join",$str);
$str=str_replace("union","union",$str);
$str=str_replace("where","where",$str);
$str=str_replace("insert","insert",$str);
$str=str_replace("delete","delete",$str);
$str=str_replace("update","update",$str);
$str=str_replace("like","like",$str);
$str=str_replace("drop","drop",$str);
$str=str_replace("create","create",$str);
$str=str_replace("modify","modify",$str);
$str=str_replace("rename","rename",$str);
$str=str_replace("alter","alter",$str);
$str=str_replace("cas","cast",$str);
$str=str_replace("&","&",$str);
$str=str_replace(">",">",$str);
$str=str_replace("<","<",$str);
$str=str_replace("",chr(32),$str);
$str=str_replace("",chr(9),$str);
$str=str_replace("",chr(9),$str);
$str=str_replace("&",chr(34),$str);
$str=str_replace("'",chr(39),$str);
$str=str_replace("<br/>",chr(13),$str);
$str=str_replace("''","'",$str);
$str=str_replace("css","'",$str);
$str=str_replace("CSS","'",$str);

return$str;

}

⑸ 一個PHP站,如果不對用戶輸入過濾,將有哪些具體形式的風險

別有用心的人會將木馬從輸入的地方植入你的伺服器, 從而竊取你伺服器的信息.

⑹ thinkphp里I方法過濾方法都有什麼有看到過intval和htmlspecialchars,手冊沒見過,想知道所有過濾方法

你好,我所知道的:
1 strip_tags:從字元串中去除 HTML 和 PHP 標記

2 mysql_escape_string:轉義一個字元串用於 mysql_query

這些函數在專防注入方面起到很大的作屬用.

熱點內容
丁度巴拉斯情人電影推薦 發布:2024-08-19 09:13:07 瀏覽:886
類似深水的露點電影 發布:2024-08-19 09:10:12 瀏覽:80
《消失的眼角膜》2電影 發布:2024-08-19 08:34:43 瀏覽:878
私人影院什麼電影好看 發布:2024-08-19 08:33:32 瀏覽:593
干 B 發布:2024-08-19 08:30:21 瀏覽:910
夜晚看片網站 發布:2024-08-19 08:20:59 瀏覽:440
台灣男同電影《越界》 發布:2024-08-19 08:04:35 瀏覽:290
看電影選座位追女孩 發布:2024-08-19 07:54:42 瀏覽:975
日本a級愛情 發布:2024-08-19 07:30:38 瀏覽:832
生活中的瑪麗類似電影 發布:2024-08-19 07:26:46 瀏覽:239