本實踐的目標理解經常使用網絡攻擊技術的基本原理。Webgoat實踐下相關實驗。css
1.實驗後回答問題html
(1)SQL注入攻擊原理,如何防護java
- 感受上次作的也是sql注入,就是故意的非法輸入(輸入的是一些指令)讓他讀進去,而後在裏面執行。
- 防護手段:一個是字符串檢測,另外一個是限制輸入字符串的長度。
(2)XSS攻擊的原理,如何防護
- xss攻擊就是攻擊網頁使得其餘用戶查看網頁時受到影響。
- 防護手段:程序員應該防止下發界面顯示html標籤,把</>等符號轉義
(3)CSRF攻擊原理,如何防護
- 經過假裝來自受信任用戶的請求來利用受信任的網站,即受害用戶登陸受信任網站後,在本地生成了COOKIE而又在不登出該網站的狀況下,訪問了危險網站,而此時訪問的危險網站可能就已經寫入了利用你的身份進行而惡意操做的代碼
- 防護手段:少登錄不知名網站,不長時間保存cookie
實驗指導:http://www.cnblogs.com/20145224kevs/p/6826084.html
2.實驗總結與體會
- 感受我所作的就是站在巨人的肩膀上稍微跳了一下,由於此次課題負責人是我舍友感受他在本身作的時候仍是很累的,然而咱們作的時候是能夠根據他找到的答案來直接將結果作出來,是比較快,並且輕鬆的,這可能也就是研究性學習和普通學習之間的區別。
3.實踐過程記錄
此次嘗試一波文字描述程序員
啓動WebGoat
- 在終端使用指令java -jar webgoat-container-7.0.1-war-exec.jar,等待其顯示
信息: Starting ProtocolHandler ["http-bio-8080"]
打開瀏覽器,訪問localhost:8080/WebGoat,登錄便可開始答題。web
Injection Flaws
- Command Injection:命令注入,要求可以在目標主機上執行任意系統命令便可;
1.首先咱們須要肯定進行注入的位置,網頁中並無文本框,只有一個下拉的選項欄,因此咱們只能修改這個下拉欄的值。有兩種方式能夠修改,可使用BurpSuite攔截再修改,也能夠直接修改頁面源代碼;
2.我此次試驗並無用到BurpSuite使用的是修改頁面代碼的方法
3.使用組合鍵Shift+Ctrl+C查看頁面源代碼,鼠標單擊下拉選項欄,這時候會自動的幫你定位到相應的代碼段,找到其中一個option,右鍵鼠標Edit HTML,這時候就可寫東西了。
4.css應該是內嵌或者外嵌的框架,右鍵了之後發現並不能改,script裏面能夠在代碼段裏設置斷點,html裏面能夠直接編輯。
5.直接在option後加上"&&ifconfig"便可,而後回到網頁,找到而且提交剛剛修改過的選項。ifconfig是看ip和網關,用別的也行
- Numeric SQL Injection:數字型SQL注入,要求經過注入SQL字符串的方式查看全部的數據;
1.一樣是修改頁面代碼,先查看頁面源代碼。
2.而後鎖定到具體的代碼,點擊下拉欄。
3.往裏面加入代碼,這裏在Value後加上or 1 = 1 - -便可
- Log Spoofing:日誌欺騙,要求使用戶名爲「admin」的用戶在日誌中顯示「成功登陸」(實際上並無成功);
這個實驗主要是爲了欺騙人眼,因爲頁面會將輸入的用戶名返回,因此咱們能夠在用戶名上動手腳,輸入用戶名%0d%0aLogin Succeeded for username: admin;
其中%0a%0d是ASCII碼的回車換行的意思
- String SQL Injection:字符串注入,要求經過SQL注入將全部信用卡信息顯示出來;
有文本框的題相對來講都比較輕鬆,輸入' or 1 = 1 --便可
LAB SQL Injection【SQL注入實驗】:
1.String SQL Injection:字符串型注入,要求使用SQL注入繞過認證,實現無密碼登錄;
先把長度限定改成15,把文本框格式改成text,在密碼欄輸入' or 1 = 1。
2。Numeric SQL Injection:數字型注入,要求使用一個普通員工的帳戶,瀏覽其BOSS的帳戶信息;
首先經過Larry的帳戶登錄(密碼爲larry),咱們先試着把Value的值改成Boss的對應值修改成112 or 1= 1,此次成功了輸出信息,可是仍是Larry的信息,看了別人的博客發現應該是將最首位的信息輸出。那麼此次咱們能夠對信息進行排序讓他排在首位。用社會工程學解釋老闆應該是工資最高的,因此爲了把老闆排到第一個SQL注入排序以下112 or 1=1 order by salary desc;sql
Database Backdoors:數據庫後門,要求使用SQL注入修改員工工資;
若是熟悉SQL語句的話能夠指定,修改信息用update語句,具體注入語句爲:101 or 1=1; update employee set salary=100000數據庫
Blind Numeric SQL Injection:數字型盲注入,要求找到pins表中cc_number字段值爲1111222233334444的記錄中pin字段的數值;
感受利用折半查找會比較快一點,可是我沒有用,由於看別人的博客答案已經被肯定爲爲2364,我試了一下,居然2364是對的,那就說明每一個人的答案都同樣,這並非隨機的。瀏覽器
Blind String SQL Injection:字符串型盲注入,要求找到pins表中cc_number字段值爲4321432143214321的記錄中pin字段的數值。pin字段類型爲varchar;
這個題目我依舊是抄的答案只不過是猜ASCII的值罷了,答案是Jill;
上面這兩個題目若是要本身作的話會比較久,可能須要專門寫個腳本不停的循環來試,不過計算機的優勢也就在於速度快。cookie
Cross-Site Scripting (XSS)
- Phishing with XSS:XSS釣魚,要求建立一個表單,誘騙訪問者輸入用戶名密碼,並將表單提交到http://localhost:8080/WebGoat/capture/PROPERTY=yes&ADD_CREDENTIALS_HERE
代碼:
上面那段代碼居然會直接在博客園以這種方式呈現,不過這樣也好。
- Stored XSS Attacks:存儲型XSS攻擊,要求在信件中寫入一個網頁或彈窗:
具體代碼應該是
- Reflected XSS Attacks:反射型XSS攻擊,要求獲得腳本訪問信用卡表單字段
");
- Cross Site Repuest Forgery
1.這個實踐是利用cookie冒名登陸,用代碼僞造請求
2.在message裏面輸入
CSRF Prompt By-Pass
這個問題你們寫的大概分爲兩種,一中是寫兩個iframe的另外一種是蔡野同窗的,這個攻擊我並非很懂並且經過評語來看寫兩個frame好像不太對,但我用兩個frame確實可以作出來。
網絡
註釋:這博客園有個大問題,應該算是個漏洞吧,我在博客院裏面寫web的代碼他會直接識別(至少是直接識別一部分),我打算免考題往這個方向作。