刷題 [網鼎杯 2018]Fakebook


解題思路

首先登陸頁面發現是這樣的:

查看源碼

源碼很正常,也沒有什么特別的

web目錄掃描

我用的是dirmap工具掃描,掃描結果保存在一個txt文件中,結果可知沒什么后台。

robots.txt

發現有/user.php.bak

下載后

審計源碼

直接是一個UserInfo類,三個屬性,get函數中存在ssrf,且沒有過濾。curl可用file協議,blog屬性調用了get函數,所以這里使用file協議讀取文件。file:///var/www/html/flag.php

正常解題

首先肯定要join,即注冊一個用戶

提示注冊成功。

get注入

注冊后發現可以點擊自己的username,點擊之后,觀察url可能存在get注入。sqlmap跑一下。sqlmap跑不出來,手動檢測,是數字型注入。union select 發現有waf,用/**/即可繞過。union /**/ select.回顯位置是第二位,往下注注注。

數據庫名:fakebook 表名:users 列名:data ,發現是序列化的數據,可知對我們注冊的姓名,年齡,博客地址進行了序列化

並且發現爆出路徑:/var/www/html/

反序列化

可以利用的變量在構造函數中,反序列化對象會自動執行構造函數。所以我們編寫腳本,將需要構造的ssrf放在blog屬性中,讓其在反序列化時被調用

O:8:"UserInfo":3:{s:4:"name";s:1:"a";s:3:"age";i:0;s:4:"blog";s:29:"file:///var/www/html/flag.php";}

因為blog在第四位,所以paylaod:

?no=-1/**/union/**/select/**/1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:4:"test";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'

注入后blog欄顯示file:///var/www/html/flag.php,此時即代表注冊成功。查看源碼:

iframe標簽中讀取了flag.php中的內容。flag即出現

總結思路

核心思路:

  • 通過注入發現data的數據是序列化的
  • 通過后台獲取源碼,代碼審計存在可利用的ssrf點
  • 結合反序列化和ssrf,保證bypass可以被利用,讀取flag.php中的flag

知識點

  • ssrf
  • sql注入
  • 反序列化漏洞


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM