Django Stark元件開發文件
[網鼎杯 2018]Fakebook
知識點
-
sql注入
-
測sql注入漏洞的步驟(自己總結一下)
先搞清楚是哪個語句,select還是update還是其他
然後搞清楚是字元型還是數字型(用來閉合語句)
然後測一下是否能執行,用sleep(3), and 1=2 等等
然後欄位數 order by
之後....
-
反序列化
-
SSRF內網滲透
題解
-
其實,最怕這種題,因為經驗不足,看到這個不知道是什麼漏洞,往往瞎摸半天才能知道。
-
這道題大一琢磨就知道是sql注入了,但有些題真的是( sql嗎? 一看wp,md,沒見過的漏洞)
-
開啟網站,看見沒有賬號,就註冊一個。登入成功,看到url變成
view.php?no=1
因為這個網站只有一個賬號,而沒有第二個,所以極有可能是sql查詢語句沒有查詢到值。
-
或者直接寫成no=1' 然後報錯,就知道這是sql查詢語句了。
-
簡單測試,猜測查詢語句應該是
select * from 表名 where id = $no
-
測得欄位數是 4
-
注入
view.php?no=2 union select 1,2,3,4%23
發現有過濾 -
測一下過濾了什麼。發現過濾了union
-
看了wp發現 還有一個資訊洩露(網站原始碼備份檔案)但是,這個原始碼沒用啊。寫union報錯,寫select報錯,說明沒有過濾掉這兩個關鍵字,但連起來就有waf,也不知道這個waf怎麼寫的?
-
在waf裡面加一個
view.php?no=2 union/**/select 1,2,3,4%23
就行了,回顯第二位,開始注表名,資料庫,等等 -
資料庫 fakebook 表名 users 欄位名no,username,passwd,data,USER,CURRENT_CONNECTIONS,TOTAL_CONNECTIONS
-
一個一個看欄位名,發現passwd是對密碼進行了md5加密,data是一個序列化
-
仔細研究
O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:12:"www.blog.com";}
現在才發現那個洩露原始碼的意義了,也明白了上面的報錯,只有username是通過sql查詢來回顯的,其他的都是通過反序列化,物件裡面查詢到的
-
思路:聯合查詢注入一個構造的序列。讓原始碼進行反序列化,然後通過curl(),用file://協議來看flag.php原始碼(絕對路徑報錯已經給了)
-
還有一個問題,不知道寫的sql語句那個是data欄位。不過可以一個一個試,或者直接猜測試第四個欄位
view.php?no=2 union/**/select 1,(select data from users),3,'O:8:"UserInfo":3:{s:4:"name";s:5:"admin";s:3:"age";i:18;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'%23