日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL注入(1)--判断是否存在SQL注入漏洞

發布時間:2023/12/19 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL注入(1)--判断是否存在SQL注入漏洞 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

什么是SQL注入

不論是學習后端開發/數據庫/網絡安全,SQL注入安全隱患反復被提起
到底什么是SQL?

維基百科的定義:

(1)什么是SQL?
SQL是用來操控數據庫的語言

(2)舉一個例子,現在我們要查詢電影“長津湖”的票房數據:


先想象一下開發人員是如何書寫代碼從數據庫中拿到數據的:

作為一名黑客如何思考?

SQL注入靶場練習- DVWA(1)

【1】首先將security調為low:

(記住要點擊“submit”)

【2】然后挑戰模塊SQL Injection

首先嘗試正常的

【3】嘗試查看源碼:


我將源碼粘貼到了下面:

SQL Injection Source vulnerabilities/sqli/source/low.php <?phpif( isset( $_REQUEST[ 'Submit' ] ) ) {// Get input$id = $_REQUEST[ 'id' ];switch ($_DVWA['SQLI_DB']) {case MYSQL:// Check database$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";$result = mysqli_query($GLOBALS["___mysqli_ston"], $query ) or die( '<pre>' . ((is_object($GLOBALS["___mysqli_ston"])) ? mysqli_error($GLOBALS["___mysqli_ston"]) : (($___mysqli_res = mysqli_connect_error()) ? $___mysqli_res : false)) . '</pre>' );// Get resultswhile( $row = mysqli_fetch_assoc( $result ) ) {// Get values$first = $row["first_name"];$last = $row["last_name"];// Feedback for end userecho "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";}mysqli_close($GLOBALS["___mysqli_ston"]);break;case SQLITE:global $sqlite_db_connection;#$sqlite_db_connection = new SQLite3($_DVWA['SQLITE_DB']);#$sqlite_db_connection->enableExceptions(true);$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";#print $query;try {$results = $sqlite_db_connection->query($query);} catch (Exception $e) {echo 'Caught exception: ' . $e->getMessage();exit();}if ($results) {while ($row = $results->fetchArray()) {// Get values$first = $row["first_name"];$last = $row["last_name"];// Feedback for end userecho "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>";}} else {echo "Error in fetch ".$sqlite_db->lastErrorMsg();}break;} }?>

內容非常多,但是只需要關注SQL語句select

$query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';";

關注:
SELECT first_name, last_name FROM users WHERE user_id = ‘$id’;

$id就是用戶輸入的 內容。

判斷有沒有SQL注入漏洞:

用戶輸入的數據為1’ and 1=1 #
這時候SQL語句發生了變化,在原有查詢完成的 基礎上會判斷1 = 1(這顯然是正確的),如果判斷正確則才會有輸出
#作用是注釋(移除)后續SQL語句,去掉后面可能會造成影響的 SQL語句


用戶輸入的數據為1’ and 1=2 #
這時候SQL語句在原有查詢完成后會有判斷 1=2(這明顯是錯誤的),如果判斷正確才會有輸出

這時候沒有任何回顯了,說明判斷是錯誤的,這時候確定存在SQL注入漏洞

總結:
兩次嘗試1=1正常輸出,1=2錯誤輸出,證明SQL語句生效,存在SQL注入漏洞

總結

以上是生活随笔為你收集整理的SQL注入(1)--判断是否存在SQL注入漏洞的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。