初赛

签到

人脸识别

easyGO

gdb里面动态调试,第一个call步进,然后一路单步下去,能直接找到真flag

puzzles

数学题。。队里数学大佬写的(考研人无敌)

question 0

写脚本求解

1
2
3
4
5
6
import numpy as np
from scipy.linalg import solve
a = np.array([[13627, 26183, 35897, 48119], [23027,38459,40351,19961], [36013,45589,17029,27823],[43189,12269,21587,33721]])
b = np.array([347561292,361760202,397301762,350830412])
x = solve(a, b)
print(x)

a1,a2,a3,a4=[4006,3053,2503,2560]

question 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
def handlerNum(num):
if num > 1:
for i in range(2, num//2+1):
if (num % i) == 0:
return 0
break
else:
return 1
else:
return 0
if __name__ == '__main__':
for i in range(26364809, 26366033):
if handlerNum(i):
print(i)

Part1 = 26365399

question 2

第一部分洛必达,第二第三部分正常积分,第四部分分部积分:

question 3

question 4

柱面法解三重积分

组合得FLAG

JustSoso

伪协议读文件,基本的反序列化。

your_pwn

数组下标没有check,可以越界读写。gdb里面动态调试先确定libc和返回地址的偏移,相当于数组的632和344,然后利用数组越界泄露__libc_start_main地址然后计算libc基址,然后把libc+one_gadget的地址写入返回地址。

saleae

下载saleae即可读取

usbasp

同上

24C

同上,set up write to信号的下一行字符的ASCII值表示接下来数据要修改的位置,在5.9s左右的set up write信号下将字符ac覆盖了9e的位置

daily

show函数存在漏洞,输出的时候未截断,能leak出heap与libc的地址
fastbins的free能泄露出heap的地址
smallbins的free能泄露出libc的地址
delete()的free没有检查下标,能构造double free,从而修改free 地址为system,构造system(‘/bin/sh’)并执行

全宇宙最简单的SQL

主要用到虚拟表和exp报错

partdes

第13轮解出字符串

baby_pwn

ret2dlresolve,用roputils直接生成ropchain来getshell