首页 > 其他分享 >WKCTF RE

WKCTF RE

时间:2024-07-17 16:07:51浏览次数:13  
标签:16 v12 v13 v10 WKCTF v15 RE v14

WKCTF

so_easy

安卓逆向,关键的check逻辑都在native层里面

QQ_1720966181677

主要是很多层的异或操作

QQ_1720966244618

除了Z3和爆破想不到其他方法了

from z3 import *

src = [  0xAE, 0x81, 0xBA, 0xC1, 0xF0, 0x95, 0x0A, 0x54, 0x14, 0x03, 
  0x4A, 0xE2, 0x52, 0x4E, 0x84, 0xF8, 0xC9, 0x3E, 0x14, 0x98, 
  0x8F, 0x98, 0xFD, 0x09, 0x5E, 0xAD, 0x05, 0xB4, 0x01, 0x0F, 
  0xC0, 0x3F]

src1 =0x3FC00F01B405AD5E//自己扣密文

xor_value = BitVecVal(0x71234EA7D92996F5, 64)

v10 = BitVec('v10', 64)

v11=255
# 创建求解器
s = Solver()

for _ in range(v11,0,-5):
    v12 = (2 * v10) ^ xor_value
    v12 = If(v10 >= 0, 2 * v10, v12)
    
    v13 = (2 * v12) ^ xor_value
    v13 = If(v12 >= 0, 2 * v12, v13)
    
    v14 = (2 * v13) ^ xor_value
    v14 = If(v13 >= 0, 2 * v13, v14)
    
    v15 = (2 * v14) ^ xor_value
    v15 = If(v14 >= 0, 2 * v14, v15)
    
    v10 = (2 * v15) ^ xor_value
    v10 = If(v15 >= 0, 2 * v15, v10)
    
s.add(v10==src1)

# 检查是否有解
if s.check() == sat:
    # 如果有解,打印模型
    print("6666")
    #print chr
    print(s.model())

else:
    print("No solution exists")
    
print(hex(9034890700725238114))

quite_easy

调了一下主函数,这个是假的flag,其他也没啥用

QQ_1720967410229

TLS回调函数是很明显藏了逻辑的

QQ_1720967825077

这两个函数很多花指令,这里选择nop掉jz,第二个函数也一样QQ_1721200548666

下断点开始调试,第一个反调试的地方,改ZF标志位

QQ_1721200669133

在第二个函数里面注册了一个新函数,继续下断点

QQ_1721201094182

先输入flag: 123456789012345678901234

对应的rand:0x97 0X91 0X51 0X37 0X82...0XFB 0X55

可以看到就是把rand的值继续放到我们输入的后面

QQ_1721202037233

输入的值和16次的rand加起来长度需要是48

QQ_1721202093925

输入长度是32位

重写开测

12345678901234567890123456789012

后面逻辑就是

前16位和rand异或

后16位与前16位异或

输入与假的flag异或 flag{ed1d665e6516a37ab09f0b7a40}

QQ_1721202526432

开始搓脚本

a=[  0xB1, 0x74, 0x93, 0x32, 0xD6, 0x13, 0xCC, 0x85, 0x20, 0xA8, 
  0xF4, 0x96, 0x8A, 0xD2, 0x7D, 0x26]
b=[ 0x80, 0xD3, 0x6F, 0xFF, 0x15, 0x03, 0x98, 0x8C, 0xB4, 0x5B, 
  0x96, 0xC0, 0x59, 0xAC, 0x18, 0xDF, 0x2D, 0xCE, 0x3F, 0xFB, 
  0xC4, 0xED, 0xD8, 0xD2, 0xA8, 0x2D, 0xF8, 0x23, 0x9F, 0x22, 
  0x25, 0xCE]
c=[ord(i) for i in "flag{ed1d665e6516a37ab09f0b7a40}"]

for i in range(32):
    b[i]=(b[i]+c[i] )& 0xff
    
for i in range(16):
    b[i]^=a[i] & 0xff
    
for i in range(16,32):
    b[i]^=b[i-16] & 0xff
    

    
for i in range(32):
    print(chr(b[i]),end="")                   
#WKCTF{08898c40064d1fc4836db94fe}

标签:16,v12,v13,v10,WKCTF,v15,RE,v14
From: https://www.cnblogs.com/BediveRe/p/18302106

相关文章

  • ES快速开发,ElasticsearchRestTemplate基本使用以及ELK快速部署
    最近博主有一些elasticsearch的工作,所以更新的慢了些,现在就教大家快速入门,并对一些基本的查询、更新需求做一下示例,废话不多说开始:1. ES快速上手es下载:[https://elasticsearch.cn/download/]()这里关于es所需要的链接基本都有,可以快速下载使用当你解压好了归档文件之后,Elas......
  • ASP.NET Core -NLog
    1.安装NuGet包2.准备Nlog的配置文件 nlog.config<?xmlversion="1.0"encoding="utf-8"?><nlogxmlns="http://www.nlog-project.org/schemas/NLog.xsd"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"au......
  • Axure引用Antv-G2
    本文分为5个模块:引用模版、说明---引用模版、说明---antv-g2图表示例代码、axure引用步骤、示例代码引用模版:javascript:varscript=document.createElement('script');script.type="text/javascript";script.src="https://unpkg.com/@antv/g2/dist/g2.min.js";document.he......
  • Ingress Nginx集成进Skywalking
    注:本文使用的环境为:k3sversionv1.29.5+k3s1IngressNginxcontrollerv1.10.1Skywalking9.7.0-066457bskywalking-nginx-luav0.6.0  本文假设你已经在ingress-nginx命名空间下安装部署了IngressNginxcontroller方案  在介绍方案之前,我们先了解一下相关的背......
  • Java中的RESTful API设计与实现
    Java中的RESTfulAPI设计与实现大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、引言在现代Web开发中,RESTfulAPI已经成为数据传输的标准方式。REST(RepresentationalStateTransfer)是一种基于资源的架构风格,广泛应用于互联网服务中。本文将详细介绍......
  • Java中的响应式编程与Reactor框架使用详解
    Java中的响应式编程与Reactor框架使用详解大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!一、引言响应式编程是一种面向数据流和变化传播的编程范式,它适用于处理异步数据流和事件驱动的场景。Reactor框架是在Java中实现响应式编程的强大工具,本文将深入......
  • 如何使用Redis实现分布式锁
    在分布式系统中,保证多个进程或线程对共享资源的同步访问是一个常见问题。锁是一种常用的同步机制,但在单机环境中常用的锁机制在分布式系统中往往不再适用。Redis,作为一种高性能的键值存储系统,提供了实现分布式锁的可能。本文将介绍如何使用Redis实现分布式锁,并通过Java代码示例展......
  • EFCore -CodeFirst模式 数据库使用SqLite
    首先安装nuget包:System.Data.SQLite和SQLite.CodeFirst,如下二图:然后在App.config中配置数据库连接字符串:<connectionStrings><addname="StuDB"connectionString="datasource=BoilerCalculator.db"providerName="System.Data.SQLite.EF6"/&......
  • log4net 在.NET Core 控制台程序中的应用(2)
    简介本文主要讲解log4net在.NETCore控制台程序中的应用步骤1.安装log4netNuget包2.增加配置文件3.直接调用4.验证结果实施1.安装log4netNuget包首先,需要在你的.NETCore项目中安装log4net包。可以通过NuGet包管理器来安装。打开你的项目,然后使用以下命令安装log4net:......
  • C语言中for、while、do while、break、continue、goto的使用方法
    目录一、while循环二、for循环三、dowhile循环四:break和continue语句break语句continue语句goto语句今天介绍一下循环函数for、while、dowhile 然后再看一看break、continue、goto语句循环结构是必须要学习好的,几乎所有代码都会应用到循环结构一、while循环whi......