攻防世界-fakebook

1、首先做web题我们先扫一扫网站目录

 首先有robots.txt,login.php,flag.php等,我们可以进去访问一下flag.php

 发现有是有,但是没有回显。如果我们确定了一个页面存在,访问后页面内容为空,有两种情况,要么页面本身就没有内容,那我们还玩个锤儿啊。再来就是没有访问权限,服务器禁止通过HTTP直接请求flag.php文件。那接下来我们所有的思路就可以明确,就是要找系统中能够访问flag.php的其他方式

在访问下robots.txt文件

 发现有一个备份文件,我们访问看看

<?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资源

        curl_setopt($ch, CURLOPT_URL, $url); //设置url和相应的选项  $ch用来接受抓取的CURLOPT_xxx
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
        $output = curl_exec($ch); //抓取url并把它传递给浏览器
        $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        if($httpCode == 404) {
            return 404;
        }
        curl_close($ch); //关闭url资源,并且释放系统资源

        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);
    }

}

 isValidBlog函数是对blog参数进行的正则匹配,猜测对用户的输入格式进行了一定的限制

 接下来我们该进行题目分析

 发现login.php,进行注入,但是不管如何都是提示我们login failed

我们在进入join.php

 我们随便进行注册看看是否可以

 

可以注入成功,但是我们先查看源代码没有什么信息,但是发现admin可以点击,我们点开看看

查看源代码我们可以注意到有两个可以利用的点,一个是sql注入,还有一个是iframe

 发现iframe里面有一个data伪协议

使用方法:data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4,但是我们首先不知道如何对其添加语法,其次我们目前还不知道flag.php在那个目录下,因此我们利用sql注入看看

sql注入

首先我们把no=1改为0

 

发现没有回显了,而且给我们爆出了当前的目录 ,而且可以确定flag.php在/var/www/html/下

接着我们使用'进行注入,发现报错,可以判断出一个数值型注入

所以我们可以接着判断其有多少个字段,我第一次试的是4

接下来的步骤是探索那个字段可以供我们看到

但是当我们使用联合查询的时候,发现其有过滤,我试了很久,最后借鉴其他的解法,发现是应该检测union select这个字符串,因此我们可以使用union++select活着union/**/select进行绕过

结果是对的,因此我们进行爆库,爆字段

 

 我们爆出数据库名fakebook不说,还发现是一个root用户。mysql中的load_file函数,允许访问系统文件,并将内容以字符串形式返回,不过需要的权限很高,且函数参数要求文件的绝对路径。这巧了不是,条件全都有。因此我们可以使用mysql中的load_file()函数,然后查看源码

发现flag

 但是我去网上搜了发现还有一种做法

我们不适用load_file函数继续注入

爆表

爆字段

我们可以从前面的步骤得知no,username,passwd和后面变量为系统变量,唯独data不知道,因此我们查看一下

 发现是一个反序列化对象,跟我们之前看到的代码相关(后面的看不懂,目前先到这)

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sxmmmmmmm

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值