sql注入攻擊(sql injection),是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程式沒有對提交的資料經過檢查,那麼就會造成sql注入攻擊。
1、攻擊者訪問有sql注入漏洞的站點,尋找注入點
2、攻擊者構造注入語句,注入語句和程式中的sql語句結合生成新的sql語句
3、新的sql語句被提交到資料庫中執行 處理
4、資料庫執行了新的sql語句,引發sql注入攻擊
資料庫
create
table
`postmessage` (
`id`
int(11) not
null auto_increment,
`subject`
varchar(60) not
null
default 」,
`name`
varchar(40) not
null
default 」,
`email`
varchar(25) not
null
default 」,
`question` mediumtext not
null,
`postdate` datetime not
null
default 』0000-00-00
00:00:00′,
primary
key (`id`)
grant
allprivileges
on ch3.* to 『sectop』@localhost identified by 』123456′;
頁面
可能存在注入點,我們來測試
and 1=1
返回頁面
一次查詢到記錄,一次沒有,我們來看看原始碼
12-15行
// 執行mysql查詢語句
$query = "select * from postmessage where id = ".$_get["id"];
$result = mysql_query($query)
ordie("執行ysql查詢語句失敗:" . mysql_error());
引數id傳遞進來後,和前面的字串結合的sql語句放入資料庫執行 查詢
提交and 1=1
,語句變成select * from postmessage where id = 71 and 1=1
這語句前值後值都為真,and以後也為真,返回查詢到的資料
提交and 1=2
,語句變成select * from postmessage where id = 71 and 1=2
這語句前值為真,後值為假,and以後為假,查詢不到任何資料
正常的sql查詢,經過我們構造的語句之後,形成了sql注入攻擊。通過這個注入點,我們還可以進一步拿到許可權,比如說運用 union讀取管理密碼,讀取資料庫資訊,或者用mysql的load_file,into outfile等函式進一步滲透。
運用 intval函式將資料轉換成整數
int intval(mixed var, int base)
var是要轉換成整形的變數
base,可選,是基礎數,預設是10
運用 floatval或doubleval函式分別轉換單精度和雙精度浮點型引數
int floatval(mixed var)
var是要轉換的變數
int doubleval(mixed var)
var是要轉換的變數
運用 addslashes函式來將單引號「』」轉換成「\』」,雙引號「」」轉換成「\」」,反斜槓「\」轉換成「\」,null字元加上反斜槓「\」
string addslashes (string str)
str是要檢查的字串
那麼剛才出現的**漏洞,我們可以這樣修補
// 執行mysql查詢語句
$query = "select * from postmessage where id = ".intval($_get["id"]);
$result = mysql_query($query)
ordie("執行ysql查詢語句失敗:" . mysql_error());
//如果是字元型,先判斷magic_quotes_gpc能無法 為on,當不為on的時候運用 addslashes轉義特殊字元
if(get_magic_quotes_gpc()) else
再次測試,漏洞已經修 PHP漏洞全解 五 SQL注入
sql注入攻擊 sql injection 是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程式沒有對提交的資料經過檢查,那麼就會造成sql注入攻擊。sql注入攻擊的一般步驟 1 攻擊者訪問有sql注入漏洞的站點,尋找注入點 2 攻擊者構造注入語句,注入語句和程式中的sql...
PHP漏洞全解 五 SQL注入
本文主要介紹針對php 的sql注入攻擊。所謂的sql注入攻擊,即一部分程式設計師在編寫 的時候,沒有對使用者輸入資料的合法性進行判斷,使應用程式存在安全隱患。使用者可以提交一段資料庫查詢 根據程式返回的結果,獲得某些他想得知的資料。sql注入攻擊 sql injection 是攻擊者在表單中提交精...
PHP漏洞全解 五 SQL注入
sql注入攻擊 sqlinjection 是攻擊者在表單中提交精心構造的sql語句,改動原來的sql語句,如果web程式沒有對提交的資料經過檢查,那麼就會造成sql注入攻擊。sql注入攻擊的一般步驟 1 攻擊者訪問有sql注入漏洞的站點,尋找注入點 2 攻擊者構造注入語句,注入語句和程式中的sql語...