sql注入介紹:sql注入介紹
注入產生原因:web應用程式對使用者輸入資料的合法性沒有判斷或過濾不嚴,導致惡意payload直接帶入sql語句執行,從而執行payload中非法操作!
新建php檔案,將下面**複製到php檔案中,在瀏覽器中訪問即可
<?php
$host
='127.0.0.1'
;$dbuser
='root'
;$dbpass
='root'
;$dbname
='test'
;$con
=new
mysqli
($host
,$dbuser
,$dbpass
,$dbname);
if($con
->
connect_error)if
(isset
($_get
['id'])
&&!empty
($_get
['id'])
)else
$sql
="select id,title,content from t_feedback where id='$id
' limit 0,1"
;$result
=$con
->
query
($sql);
if($result
->
num_rows
>0)
else
echo
"your sql syntax: "
.$sql
;$con
->
close()
;
dnslog注入需使用 ==load_file()==函式(需高許可權),有自己的網域名稱可以自己搭建dns網域名稱解析,也可使用免費的 ceye 平台,登入後在個人資訊中會得到乙個隨機的二級網域名稱 (identifier) ,如下圖:
通過 concat() 拼接函式,查詢資料庫名, *** 為自己的二級網域名稱,, — 可自定義(也可不寫),當語句執行後,在 ceye dns query 介面便可檢視爆出的資料庫資訊,關鍵payload:
查詢資料庫表名,關鍵payload:
查詢資料庫表列名資訊,關鍵payload:
查詢資料庫表第一條使用者資訊,關鍵payload:
由於此處傳入 id 值為 int 型別,sql語句中 id 值拼接使用了 』 ,在mysql中, where id=『1』 會自動將id值轉為int型,此處既可使用 intval() 函式將接收的引數值強制轉換為 int 型,亦可防止特殊字元的輸入。
方法一:將$id = $_get['id'];
改為$id = intval($_get['id']);
即可。
方法二:配置 php.ini 開啟 magic_quotes_gpc 或使用php中 addslashes() 函式,轉義特殊字元,防止注入。注意:若資料庫字元編碼為gbk可使用寬位元組注入繞過
,此指令碼中,$id = $_get['id'];
改為$id = get_magic_quotes_gpc() ? $_get['id'] : addslashes($_get['id']);
即可。為了防止寬位元組繞過,可在連線資料庫**後加上$con->query("set names utf8");
修改後php**如下:
<?php
$host
='127.0.0.1'
;$dbuser
='root'
;$dbpass
='root'
;$dbname
='test'
;$con
=new
mysqli
($host
,$dbuser
,$dbpass
,$dbname);
if($con
->
connect_error)if
(isset
($_get
['id'])
&&!empty
($_get
['id'])
)else
$sql
="select id,title,content from t_feedback where id='$id
' limit 0,1"
;$result
=$con
->
query
($sql);
if($result
->
num_rows
>0)
else
echo
"your sql syntax: "
.$sql
;$con
->
close()
;
——捨心 xxe 回顯與無回顯
學習於紅日安全 一 有回顯 1 直接將外部實體引用的uri設定為敏感目錄 xxe 2 將外部實體引用的 url 設定到本地伺服器,本地構建惡意 dtd 檔案,遠端注入 xxe evil 外部 evil.dtd 中的內容 二 無回顯可以使用外帶資料通道提取資料,先使用 filter 獲取目標檔案的內容...
mysql錯誤回顯注入 sql注入 顯錯注入
前提知識 資料庫 就是將大量資料把儲存起來,通過計算機加工而成的可以高效訪問資料庫的資料集合 資料庫結構 庫 就是一堆表組成的資料集合 表 類似 excel,由行和列組成的二維表 字段 表中的列稱為字段 記錄 表中的行稱為記錄 單元格 行和列相交的地方稱為單元格 在資料庫裡有乙個系統庫 inform...
mysql手工注入 有回顯
頁面源 分析 定義了乙個變數 id來接受通過get方式傳遞來的id值,在變數 sql裡沒有進行過濾直接把使用者輸入的id值傳入了進去,當使用者傳入惡意id引數1 的時候變數 sql裡就變成了這樣 if isset get id id get 1 fp fopen result.txt a fwrit...