開始
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM38FdsYkRGZkRG9lcvx2bjxiNx8VZ6l2cs0TVU5UMnpWTxh2MMBjVtJWd0ckW65UbM5WOHJWa5kHT20ESjBjUIF2X0hXZ0xCMx81dvRWYoNHLrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdssmch1mclRXY39CXldWYtlWPzNXZj9mcw1ycz9WL49zZuBnL1cTM5IzMzAjM3EzNwAjMwIzLc52YucWbp5GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.png)
進入題目有兩個按鈕,一個是登陸,一個是加入,那麼我們先點加入建立一個賬号。
建立賬号後發現這個admin可以點選,那我們點選試一試。
發現這裡傳了一個參數,那我們試一試有沒有注入點。輸入單引号發現報錯。
用order by 語句測試字段4不報錯,5報錯,證明這裡有5個字段。
接下來我們用union select 聯合查詢檢視回顯
發現被攔截了,看看可不可以繞過。我們用内聯注釋繞過。
發現在2的位置有回顯,是以可以在這裡注入,不過我在注冊的頁面抓了下包,發現在join頁面這裡存在post注入,且可以直接用sqlmap跑,可以上sqlmap那當然不手工(露出猥瑣的笑容)。
跑了下庫,在用--current-db參數跑了下目前在什麼庫下面。
跑出在fakebook庫下面
接下來就是跑fakebook的表字段等,這裡就不寫了,這題有點麻煩,寫的也是有點煩躁,最主要疫情在家人也有點煩躁。
這裡是爆出的字段,先看看data字段裡面的内容。
大家應該看懂了吧,沒看懂的話看這裡
反序列化,現在大概方向知道了,通過這裡的反序列化,我們可以傳入序列化參數,讓反序列化進行解析。那我們先構造一個payload看看可不可以解析。
http://220.249.52.133:53109/view.php?no=-1%20union%20%201,2,3,%27O:8:%22UserInfo%22:3:{s:4:%22name%22;s:4:%227995%22;s:3:%22age%22;i:11;s:4:%22blog%22;s:10:%22www.xj.com%22;}%27
發現可以正常解析,現在我們就要想辦法讀取flag了。這裡運用到了CSRF
當然說到CSRF收集到的一些資訊,一般我做CTF的題目都會有一些套路步驟,上來就是把這個網站用bp的spider爬行一下
就爬了個這個當然是沒什麼用,爬不到那就上禦劍掃下背景,背景沒掃到但是掃到了一個robots.txt檔案,各位師傅肯定都知道這個檔案是幹嘛的,我通路了下。
發現不然爬的有個user.php的備份檔案。我們在通路一下。
是一個可以下載下傳的檔案
打開看看
一段代碼,簡單審計一下,發現這裡以get的方式傳入url,但是下方沒有對get過來的url做任何過濾和白名單,或黑名單的保護措施,是以這裡的get存在CSRF。
最後的地方比對一個正則,滿足的才會被get傳入
不懂正則的可以參考https://www.cnblogs.com/zery/p/3438845.html
現在就可以嘗試讀取我們的flag了,當然有了CSRF我們還需要知道我們讀取flag的路徑,路徑在哪裡了,看這裡。
有了路徑就是構造payload,當然payload我也是構造了好久,這裡需要一個file僞協定進行讀取。
http://220.249.52.133:53109/view.php?no=-1%20union%20%201,2,3,%27O:8:%22UserInfo%22:3:{s:4:%22name%22;s:1:%221%22;s:3:%22age%22;i:1;s:4:%22blog%22;s:29:%22file:///var/www/html/flag.php%22;}%27
發現解析成功,沒有報錯,但是還是沒有flag,錯肯定是沒有錯了,成功解析了,檢視了下源代碼。
發現一個iframe标簽
通路裡面的位址
又是一片空白,在繼續檢視源代碼。
總算是找到了flag!
總結
題目的單個知識點都不難,但是結合到一起就有點繁瑣,而且裡面的一些小坑有點搞心态,不過總體來說這題出的還是比較好的,每個地方都有邏輯可循!