国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

php中常見的sql攻擊正則表達式匯總

2020-03-22 18:15:40
字體:
來源:轉載
供稿:網友
本文實例講述了php中常見的sql攻擊html' target='_blank'>正則表達式。分享給大家供大家參考。具體分析如下:我們都已經知道,在MYSQL 5+中 information_schema庫中存儲了所有的 庫名,表明以及字段名信息。故攻擊方式如下:1. 判斷第一個表名的第一個字符是否是a-z中的字符,其中blind_sqli是假設已知的庫名。
注:正則表達式中 ^[a-z] 表示字符串中開始字符是在 a-z范圍內復制代碼 代碼如下:index.php id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="blind_sqli" AND table_name REGEXP '^[a-z]' LIMIT 0,1) /*2. 判斷第一個字符是否是a-n中的字符復制代碼 代碼如下:index.php id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="blind_sqli" AND table_name REGEXP '^[a-n]' LIMIT 0,1)/*3. 確定該字符為n復制代碼 代碼如下:index.php id=1 and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="blind_sqli" AND table_name REGEXP '^n' LIMIT 0,1) /*4. 表達式的更換如下復制代碼 代碼如下:expression like this: '^n[a-z]' - '^ne[a-z]' - '^new[a-z]' - '^news[a-z]' - FALSE
這時說明表名為news ,要驗證是否是該表明 正則表達式為'^news$',但是沒這必要 直接判斷 table_name = 'news‘ 不就行了。5.接下來猜解其它表了 只需要修改 limit 1,1 - limit 2,1就可以對接下來的表進行盲注了。例如:
復制代碼 代碼如下:$Exec_Commond = "( /s|/S)*(exec(/s|/+)+(s|x)p/w+)(/s|/S)*";
$Simple_XSS = "( /s|/S)*((%3C)| )((%2F)|/)*[a-z0-9%]+((%3E)| )(/s|/S)*";
$Eval_XSS = "( /s|/S)*((%65)|e)(/s)*((%76)|v)(/s)*((%61)|a)(/s)*((%6C)|l)(/s|/S)*";
$Image_XSS = "( /s|/S)*((%3C)| )((%69)|i|I|(%49))((%6D)|m|M|(%4D))((%67)|g|G|(%47))[^/n]+((%3E)| )(/s|/S)*" ;
$Script_XSS = "( /s|/S)*((%73)|s)(/s)*((%63)|c)(/s)*((%72)|r)(/s)*((%69)|i)(/s)*((%70)|p)(/s)*((%74)|t)(/s|/S)*";
$SQL_Injection = "( /s|/S)*((%27)|(')|(%3D)|(=)|(/)|(%2F)|(")|((%22)|(-|%2D){2})|(%23)|(%3B)|(;))+(/s|/S)*";sql攻擊代碼:
復制代碼 代碼如下: php
function customError($errno, $errstr, $errfile, $errline)
{
echo " b Error number: /b [$errno],error on line $errline in $errfile br /
die();
}
set_error_handler("customError",E_ERROR);
$getfilter="'|(and|or)/b.+ ( | |=|in|like)|///*.+ /*//| /s*script/b|/bEXEC/b|UNION.+ SELECT|UPDATE.+ SET|INSERT/s+INTO.+ VALUES|(SELECT|DELETE).+ FROM|(CREATE|ALTER|DROP|TRUNCATE)/s+(TABLE|DATABASE)";
$postfilter="/b(and|or)/b.{1,6} (=| | |/bin/b|/blike/b)|///*.+ /*//| /s*script/b|/bEXEC/b|UNION.+ SELECT|UPDATE.+ SET|INSERT/s+INTO.+ VALUES|(SELECT|DELETE).+ FROM|(CREATE|ALTER|DROP|TRUNCATE)/s+(TABLE|DATABASE)";
$cookiefilter="/b(and|or)/b.{1,6} (=| | |/bin/b|/blike/b)|///*.+ /*//| /s*script/b|/bEXEC/b|UNION.+ SELECT|UPDATE.+ SET|INSERT/s+INTO.+ VALUES|(SELECT|DELETE).+ FROM|(CREATE|ALTER|DROP|TRUNCATE)/s+(TABLE|DATABASE)";
function StopAttack($StrFiltKey,$StrFiltValue,$ArrFiltReq)
{
if(is_array($StrFiltValue))
{
$StrFiltValue=implode($StrFiltValue);
}
if (preg_match("/".$ArrFiltReq."/is",$StrFiltValue)==1&&!isset($_REQUEST['securityToken']))
{
slog(" br br 操作IP: ".$_SERVER["REMOTE_ADDR"]." br 操作時間: ".strftime("%Y-%m-%d %H:%M:%S")." br 操作頁面:".$_SERVER["PHP_SELF"]." br 提交方式: ".$_SERVER["REQUEST_METHOD"]." br 提交參數: ".$StrFiltKey." br 提交數據: ".$StrFiltValue);
print "result notice:Illegal operation!";
exit();
}
}
foreach($_GET as $key= $value)
{
StopAttack($key,$value,$getfilter);
}
foreach($_POST as $key= $value)
{
StopAttack($key,$value,$postfilter);
}
foreach($_COOKIE as $key= $value)
{
StopAttack($key,$value,$cookiefilter);
}

function slog($logs)
{
$toppath="log.htm";
$Ts=fopen($toppath,"a+");
fputs($Ts,$logs."rn");
fclose($Ts);
}

sql分析:如果使用這個函數的話,這個函數會繞開PHP的標準出錯處理,所以說得自己定義報錯處理程序(die())。
其次,如果代碼執行前就發生了錯誤,那個時候用戶自定義的程序還沒有執行,所以就不會用到用戶自己寫的報錯處理程序。 那么,PHP里有一套錯誤處理機制,可以使用set_error_handler()接管PHP錯誤處理,也可以使用trigger_error()函數主動拋出一個錯誤。set_error_handler()函數設置用戶自定義的錯誤處理函數。函數用于創建運行期間的用戶自己的錯誤處理方法。它需要先創建一個錯誤處理函數,然后設置錯誤級別。
關于的用法:
復制代碼 代碼如下:function customError($errno, $errstr, $errfile, $errline)
{
echo " b 錯誤代碼: /b [${errno}] ${errstr}/r/n";
echo " 錯誤所在的代碼行: {$errline} 文件{$errfile}/r/n";
echo " PHP版本 ",PHP_VERSION, "(" , PHP_OS, ")/r/n";
// die();
}
set_error_handler("customError",E_ALL| E_STRICT);總結PHP遇到錯誤時,就會給出出錯腳本的位置、行數和原因,有很多人說,這并沒有什么大不了。但泄露了實際路徑的后果是不堪設想的,對于某些入侵者,這個信息可是非常重要,而事實上現在有很多的服務器都存在這個問題。 有些網管干脆把PHP配置文件中的 display_errors 設置為 Off 來解決,但本人認為這個方法過于消極。有些時候,我們的確需要PHP返回錯誤的信息以便調試。而且在出錯時也可能需要給用戶一個交待,甚至導航到另一頁面。但是有了set_error_handler()之后,這些矛盾也都可以解決掉了。但是發現很少用這個函數。希望本文所述對大家的PHP程序設計有所幫助。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 秀山| 滨州市| 土默特右旗| 海口市| 若尔盖县| 佛学| 赣州市| 竹山县| 巩义市| 雅安市| 陕西省| 章丘市| 临高县| 突泉县| 孝义市| 武隆县| 龙泉市| 延边| 冷水江市| 抚松县| 清丰县| 安塞县| 闸北区| 原阳县| 武夷山市| 石泉县| 龙州县| 六枝特区| 松江区| 五河县| 肇州县| 闽侯县| 鸡泽县| 抚宁县| 壤塘县| 安国市| 东港市| 乌兰察布市| 高清| 安新县| 同心县|