1. 程式人生 > 其它 >20211911 2021-2022-2 《網路攻防實踐》實踐十報告

20211911 2021-2022-2 《網路攻防實踐》實踐十報告

1.實踐內容

總結一下本週學習內容並介紹下實踐內容,不要複製貼上

2.實踐過程

一、SEED SQL注入攻擊與防禦實驗

我們已經建立了一個Web應用程式,並將其託管在www.SEEDLabSQLInjection.com。
該Web應用程式是一個簡單的員工管理應用程式。員工可以通過此Web應用程式檢視和更新資料庫中的個人資訊。
此Web應用程式主要有兩個角色:管理員是特權角色,可以管理每個員工的個人資料資訊。
員工是一般角色,可以檢視或更新自己的個人資料資訊。完成以下任務:

-熟悉SQL語句: 我們已經建立了一個名為Users的資料庫,其中包含一個名為creditential的表。該表儲存了每個員工的個人資訊(例如,eid,密碼,薪水,ssn等)。在此任務中,您需要使用資料庫來熟悉SQL查詢。
1.使用指令service apache2 start來啟動apache服

2.登入mysql使用指令mysql -u root -pseedubuntu

3.使用指令use Users檢視使用者; (注意記得輸入指令加;), 使用指令show tables檢視資料庫表;(注意記得輸入指令加;)

4.使用指令select * from credential;(注意記得輸入指令加;)來查詢credential表

-對SELECT語句的SQL注入攻擊:上述Web應用存在SQL輸入漏洞,任務是在不知道密碼的情況下登陸該Web應用程式。
1.在Firefox瀏覽器中訪問www.seedlabsqlinjection.com該網址,可以看到登入需要輸入使用者名稱和密碼

2.在Firefox瀏覽器中按F12鍵開啟偵錯程式,輸入任意的使用者名稱和密碼,依次點選network->ALL->雙擊第一行->HEADERS,在URL就能看到與之相關聯的檔案是unsafe_home.php

3.在var/www/SQLInjection下找到該檔案,使用指令cd var/www/SQLInjection進入該檔案目錄

4.再使用指令vim unsafe_home.php開啟檢視程式碼

5.從$hashed_pwd = sha1($input_pwd);可以得知資料庫中儲存的$hashed_pwd是輸入的密碼通過sha1之後的雜湊值

6.'#'符號是註釋的意思,我們可以通過輸入使用者名稱時加入#來註釋掉驗證密碼的部分,在使用者名稱處輸入admin'#即可


7.可以通過指令curl 'www.seedlabsqlinjection.com/unsafe_home.php?username=admin%27%20%23'來進行檢視sql注入的資料

可以看到資訊和6中圖表顯示資料一樣

8.使用指令admin';update cerdential set address='China' where name='Alice' #輸入到使用者名稱處,但是修改失敗並報錯

-對UPDATE語句的SQL注入攻擊:通過員工的更新個人介面實施UPDATE語句的SQL注入攻擊。
1.在使用者名稱處輸入Alice '#來進行登入

-SQL對抗:修復上述SQL注入攻擊漏洞。

3.學習中遇到的問題及解決

  • 問題1:XXXXXX
  • 問題1解決方案:XXXXXX
  • 問題2:XXXXXX
  • 問題2解決方案:XXXXXX - ...

4.實踐總結

xxx xxx

參考資料