NewStarCTF2023 Week3 Reverse方向 题目STL WP

news/2024/5/20 0:36:38 标签: c++, 开发语言, CTF, 学习, Reverse

分析

在这里插入图片描述

在这里插入图片描述

代码不多,逻辑挺清楚的。

先用Z3解出V7:

from z3 import *

s = Solver()
v1, v2, v3, v4, v5, v6 = BitVecs('v1 v2 v3 v4 v5 v6', 32)
v7, v8, v9, v10, v11 = BitVecs('v7 v8 v9 v10 v11', 32)

s.add((v1 << 15) ^ v1 == 0x2882D802120E)
s.add((v2 << 15) ^ v2 == 0x28529A05954)
s.add((v3 << 15) ^ v3 == 0x486088C03)
s.add((v4 << 15) ^ v4 == 0xC0FB3B55754)
s.add((v5 << 15) ^ v5 == 0xC2B9B7F8651)
s.add((v6 << 15) ^ v6 == 0xAE83FB054C)
s.add((v7 << 15) ^ v7 == 0x29ABF6DDCB15)
s.add((v8 << 15) ^ v8 == 0x10E261FC807)
s.add((v9 << 15) ^ v9 == 0x2A82FE86D707)
s.add((v10 << 15) ^ v10 == 0xE0CB79A5706)
s.add((v11 << 15) ^ v11 == 0x330560890D06)
if s.check() == sat:
    result = s.model()
    print(result)

可以得到:

enc = [1359286798,84564308,592899,404707156,408356433,22873420,1398229781,35407879,1426413319, 471422726,1711934726]

这里手动调整了一下顺序。

再将数据换成16进制,并分割成44的长度。


enc = [1359286798,84564308,592899,404707156,408356433,22873420,1398229781,35407879,
       1426413319, 471422726,1711934726]
enc2 = []
for i in range(11):
    hex_value = hex(enc[i])[2:]
    padded_hex_value = hex_value.rjust(8, '0')  # 填充到长度为8,左侧补0
    enc2 += [padded_hex_value[k:k+2] for k in range(0,8,2)]
print(enc2)

这里会得到:

[‘51’, ‘05’, ‘12’, ‘0e’, ‘05’, ‘0a’, ‘59’, ‘54’, ‘00’, ‘09’, ‘0c’, ‘03’, ‘18’, ‘1f’, ‘57’, ‘54’, ‘18’, ‘57’, ‘06’, ‘51’, ‘01’, ‘5d’, ‘05’, ‘4c’, ‘53’, ‘57’, ‘4b’, ‘15’, ‘02’, ‘1c’, ‘48’, ‘07’, ‘55’, ‘05’, ‘57’, ‘07’, ‘1c’, ‘19’, ‘57’, ‘06’, ‘66’, ‘0a’, ‘0d’, ‘06’]

因为0x66的ascii是f,结合要做的逆序,0x66应该是在最后一位。

所以再对分割出的每四位做一个逆序

# 将列表分割成长度为4的子列表
sublists = [enc2[i:i+4] for i in range(0, len(enc2), 4)]
# 对每个子列表进行逆序操作
reversed_sublists = [list(reversed(sublist)) for sublist in sublists]
# 将逆序后的子列表合并为一个列表
result_list = [item for sublist in reversed_sublists for item in sublist]
print(result_list)
hex_list = [int(x, 16) for x in result_list]
print(hex_list)

# ['0e', '12', '05', '51', '54', '59', '0a', '05', '03', '0c', '09', '00', '54', '57', '1f', '18', '51', '06', '57', '18', '4c', '05', '5d', '01', '15', '4b', '57', '53', '07', '48', '1c', '02', '07', '57', '05', '55', '06', '57', '19', '1c', '06', '0d', '0a', '66']
# [14, 18, 5, 81, 84, 89, 10, 5, 3, 12, 9, 0, 84, 87, 31, 24, 81, 6, 87, 24, 76, 5, 93, 1, 21, 75, 87, 83, 7, 72, 28, 2, 7, 87, 5, 85, 6, 87, 25, 28, 6, 13, 10, 102]

这样就可以开始异或了。

flag = [0]*44
for i in range(len(hex_list)-1,-1,-1):
    if i == 43:
        flag[i] = 102
    else:
        flag[i] = hex_list[i] ^ flag[i+1]
print(flag)
flag1=[]
for i in range(len(flag)):
    flag1.append(chr(flag[i]))
flag1 = flag1[::-1]
print("".join(flag1))

# flag{b53fc431-eb1f-89da-5bd5-2e1184728a5das}

感觉写的很繁琐。。
看了官方的WP。。
在这里插入图片描述


http://www.niftyadmin.cn/n/5185487.html

相关文章

React-Router源码分析-History库

history源码 history 在 v5 之前使用单独的包&#xff0c; v6 之后再 router 包中单独实现。 history源码 Action 路由切换的动作类型&#xff0c;包含三种类型&#xff1a; POPREPLACEPUSH Action 枚举&#xff1a; export enum Action {Pop "POP",Push &quo…

【Linux系统化学习】探索进程的奥秘 | 第一个系统调用

个人主页点击直达&#xff1a;小白不是程序媛 Linux系列专栏&#xff1a;系统化学习Linux 目录 进程的概念 进程的管理 描述进程——pcb 组织进程 进程在排队 Linux下的进程 Linux组织进程 查看进程 查看可执行程序的进程 第一个系统调用 "杀掉进程" 进程…

漏洞分析 | 漏洞调试的捷径:精简代码加速分析与利用

0x01前言 近期&#xff0c;Microsoft威胁情报团队曝光了DEV-0950&#xff08;Lace Tempest&#xff09;组织利用SysAid的事件。随后&#xff0c;SysAid安全团队迅速启动了应急响应&#xff0c;以应对该组织的攻击手法。然而&#xff0c;在对漏洞的分析和复现过程中&#xff0c…

从哪里下载 Oracle database 11g 软件

登入My Oracle Support&#xff0c;选择Patches & Updates 标签页&#xff0c;点击下方的Latest Patchsets链接&#xff1a; 然后单击Oracle Database&#xff0c;就可以下载11g软件了&#xff1a; 安装单实例数据库需要1和2两个zip文件&#xff0c;安装GI需要第3个zip文…

天猫api接口,天猫详情api接口,天猫优惠券信息api接口,天猫到手价api接口,天猫商品详情接口操作演示案例

通过构建合适的请求参数&#xff0c;向API服务器发送数据请求&#xff0c;这些请求包括获取商品列表、商品详情、用户评价等。服务器将根据请求返回相应的数据响应&#xff0c;可以根据需要进行解析和处理。 taobao.item_get-获得淘宝商品详情 公共参数 名称类型必须描述keyS…

http协议各个版本的详细介绍

本文将对HTTP协议的三个重要版本进行比较&#xff0c;包括HTTP/1.0、HTTP/1.1和HTTP/2.0。我们将探讨它们的特性、优缺点&#xff0c;并通过示例来说明它们在实际应用中的差异。最后&#xff0c;我们将总结各个版本的优势和适用场景。 1. HTTP/1.0 特性&#xff1a; 请求和响…

Docker push的 http 413问题处理

1. 环境&#xff1a; 1) 内网docker服务器&#xff1a;192.168.123.1&#xff0c;操作系统为&#xff1a;redhat 7.9&#xff0c;运行了registry&#xff0c;端口18088 2) 代理服务器(可通外网)&#xff1a;192.168.110.2&#xff0c;操作系统为&#xff1a;redhat 7.92.docke…

【创作活动】作为程序员的那些愚蠢瞬间

作为一名程序员&#xff0c;我相信你一定遇到过这种情况&#xff1a;在写代码的时候&#xff0c;遇到了一些bug&#xff0c;在当下怎么检查都查不出问题出现在哪&#xff0c;等过几天后突然发现困扰自己的问题原来这么简单&#xff0c;突然觉得自己很蠢。这种情况在我身上也发生…