第一届长城杯 部分WP

19

签到

16进制的ascii+base64,手速是吧,直接一血。

flag{Welcome_to_changchengbe1}

你这flag保熟吗

前面不说了,两张图片尾部都有rar,提取出来一个hint和一个password的表格,hint给了16位的base64,加密之后和表格比较,发现
在这里插入图片描述

哦~,原来是希尔伯特曲线
观察和写脚本经历了长达1个多小时的斗争。
用希尔伯特曲线来提取此表格的脚本如下。(根据百度)

from hilbertcurve.hilbertcurve import HilbertCurve
import xlrd
readbook = xlrd.open_workbook('password.xls')
sheet = readbook.sheet_by_index(0)
f = open('base64.txt','w+')
hilbert_curve = HilbertCurve(17, 2)
base64 = ''
for i in range(65536):
    [j,k] = hilbert_curve.point_from_distance(i)
    base64 += sheet.cell(j,k).value
f.write(base64)

然后将base64,n次解码
在这里插入图片描述

密码为1f_y0u_h4ve_7he_fllllllag,_I_muSt_vvant_1t!
解压rar,得到flag.php
brainfuck,但是怎么弄都是输出error,障眼法是吧。
观察了之后发现前面所有的.(点)都被出题人删了,而作用是输出指针指向的单元内容,所以前面那一长串都无法输出,值只能被保留在对应单元中。
好在github搜brainfuck第一个就可以看到每个单元里面的信息,虽然写脚本也行,但是人都挺懒
https://fatiherikli.github.io/brainfuck-visualizer
用这个,勾选上Optimize?,delay调到最低
但是其实你还会发现一个问题,单元格只有20多个,额外的没法输出
这时只需要凭感觉将前面部分去掉,然后重新跑就行,找交集就能知道整个链子应该是哪样的了
得到
s = [117,111,122,116,123,83,114,82,121,118,105,103,95,88,102,105,101,118,95,49,72,95,52,95,101,101,48,109,119,118,105,117,102,33,95,120,102,105,101,118,125]
然后输出发现是uozt{SrRyvig_Xfiev_1H_4_ee0mwviuf!_xfiev}
然后atbash

flag{HiIbert_Curve_1S_4_vv0nderfu!_curve}

Just_cmp-re

类原题的改编题
[Zer0pts2020]easy strcmp
自己跟着复现这道题就完事
脚本如下

enc = 'flag{********************************}'
m = [0x0A07370000000000, 0x380B06060A080A37, 0x3B0F0E38083B0A07,0x373B0709060B0A3A,0x0F38070F0D]
import binascii

flag = b""  # 由于是字节操作,需要在前面加上b
for i in range(5):
    p = enc[i * 8:(i + 1) * 8]  # 将enc字符串8位一组分开
    print(p)
    a = binascii.b2a_hex(p.encode('ascii')[::-1])  # 将分开后的字符串转每一位转换成ascii,然后逆序
    print(a)
    b = binascii.a2b_hex(hex(int(a, 16) + m[i])[2:])[::-1]  # (enc[i]的ascii+m[i])的结果是16进制,[2::]是舍弃开头的0x,然后[::-1]逆序
    print(b)
    print('\n')

    flag += b  # 拼凑每组还原后的结果

print(flag)

flag{a14a424005b14e2b89ed45031ea791b9}

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值