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