[CTF]-Reverse:纯逻辑分析题型综合解析

C语言:

字符串爆破:

例题(BUUCTF SimpleRev):

 查壳

看ida

这里的中心就是两个字符串和一个计算式子,text=killshadow和str2=adsfkndcls,计算式子str2[v2] = (v1 - 39 - key[v3 % v5] + 97) % 26 + 97

完整exp:

#include<stdio.h>
int main()
{
	char key[11]="adsfkndcls";
	char text[11]="killshadow";
	char str2[11];
	char flag[11];
	int v1=0,v2=0,v3=0,v5=0;
	
	v3=v5=10;
	while(1)
	{
	for(v1='A';v1<='z';v1++)
	{
        str2[v2] = (v1 - 39 - key[v3 % v5] + 97) % 26 + 97;
        if(str2[v2]==text[v2])
        {
          	flag[v2]=v1;
          	v3++;
          	break;
		}
    }
    v2++;
    if(v2==10)
    {
    	break;
	}
    }
    printf("%s",flag);
}

最后flag是flag{KLDQCUDFZO}

ascll码逆向:

例题(SWPUCTF 2021 新生赛 re2):

无壳

直接看ida

完整exp:

result=list('ylqq]aycqyp{')
for i in range(len(result)):
    if (ord(result[i])<=94 or ord(result[i])>96) and (ord(result[i])<=62 or ord(result[i])>64):
        result[i]=chr(ord(result[i])+2)
    else:
        result[i]=chr(ord(result[i])-24)
result=''.join(result)
print(result)

输出的是{nss_c{es{r}

因为a与{加密都得y所以要适当修改一点

{nss_caesar}

#补充点:这里的if的范围因为是逆回去的,所以范围要减2。

Python:

取模逆运算:

例题(SWPUCTF 2021 新生赛 fakebase):

题目:

flag = 'xxxxxxxxxxxxxxxxxxx'

s_box = 'qwertyuiopasdfghjkzxcvb123456#$'
tmp = ''
for i in flag:
    tmp += str(bin(ord(i)))[2:].zfill(8)
b1 = int(tmp,2)
s = ''
while b1//31 != 0:
    s += s_box[b1%31]
    b1 = b1//31

print(s)

# s = u#k4ggia61egegzjuqz12jhfspfkay

简单的来说,前面的循环是把字符串转换为了二进制,后面的循环则是不断地将一个数进行整除,并将余数储存起来。只不过这里换了个形式存储余数。

在取余模运算中,我们有了除数和余数还不足以推出完整的b1,还缺少商,这个时候可以采用爆破的形式来推出完整的b1。

推出完整的b1之后可以用libnum的函数给我们推出原来的字符串。

完整exp:

import libnum
s='u#k4ggia61egegzjuqz12jhfspfkay'
s_box ='qwertyuiopasdfghjkzxcvb123456#$'

for k in range(0,31):
    b1=k
    for i in s[::-1]:
        b1=31*b1+s_box.index(i)
    print(libnum.n2s(int(b1)))

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/871667.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

汽车的UDS诊断02

UDS的不同服务: 1)物理寻址和功能寻址 can总线上往往有多个ECU,诊断设备可以和某个ECU通信,也可以和多个ECU通信,通过物理寻址和功能寻址来解决这个问题,只针对请求报文: 物理寻址:就是诊断仪与ECU之间点对点通信 功能寻址:就是诊断仪与多个ECU之间一对多信 我们的…

Github 2024-08-22 Go开源项目日报 Top10

根据Github Trendings的统计,今日(2024-08-22统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Go项目10TypeScript项目1精选Go框架、库和软件列表 创建周期:3700 天开发语言:Go协议类型:MIT LicenseStar数量:127377 个Fork数量:11751 …

【备忘录模式】设计模式系列:掌握状态回溯的艺术(设计详解)

文章目录 备忘录设计模式详解引言1. 设计模式概述2. 备忘录模式的基本概念2.1 备忘录模式的定义2.2 备忘录模式的关键角色 3. 备忘录模式的实现原理3.1 备忘录模式的工作流程3.2 模式的优缺点分析3.3 与其他模式的对比 4. 实际案例分析4.1 游戏状态保存与恢复4.2 文档编辑器撤销…

Eureka原理与实践:构建高效的微服务架构

Eureka原理与实践&#xff1a;构建高效的微服务架构 Eureka的核心原理Eureka Server&#xff1a;服务注册中心Eureka Client&#xff1a;服务提供者与服务消费者 Eureka的实践应用集成Eureka到Spring Cloud项目中创建Eureka Server创建Eureka Client&#xff08;服务提供者&…

VScode 连接远程服务器

1、 2、 3、免密登录 1、本地生成密钥 ssh-keygen2、生成的密钥默认在 C:\Users\***\.ssh\ 中3、将私钥 C:\Users\***\.ssh\id_rsa 添加到上面的配置文件中的 IdentityFile 项内4、将公钥 C:\Users\***\.ssh\id_rsa\id_rsa.pub 拷贝到远程 ~/.ssh/authorized_keys 中 4、远程…

Python | Leetcode Python题解之第354题俄罗斯套娃信封问题

题目&#xff1a; 题解&#xff1a; class Solution:def maxEnvelopes(self, envelopes: List[List[int]]) -> int:if not envelopes:return 0n len(envelopes)envelopes.sort(keylambda x: (x[0], -x[1]))f [1] * nfor i in range(n):for j in range(i):if envelopes[j]…

分享小诗梦404炫酷单页面html5源码

源码介绍 分享小诗梦404炫酷单页面html5源码&#xff0c;小诗梦的一个很炫酷页面&#xff0c;感觉应该符合一些人的感觉&#xff01;可以用来做404页面。 源码下载 分享小诗梦404炫酷单页面html5源码

uniapp-部分文件中文乱码

一、问题 在开发时遇到&#xff0c;部分页面的中文显示乱码&#xff0c;如图 搜索了一下解决方法&#xff0c;这里记录一下 二、问题原因&#xff1a; 页面的编码格式不是 utf-8 造成的 三、解决方法 打开出现乱码页面选择编译器左上角的文件 > 以指定编码重新打开 选择U…

[C++] C++11详解 (一)

标题&#xff1a;[C] C11详解 (一) 水墨不写bug 目录 前言 一、列表初始化 二、STL的初始化列表&#xff08;initializer_list —— Cplusplus.com&#xff09; 三、声明方式&#xff08;auto、decltype、nullptr&#xff09; 1.auto ​编辑 2.decltype 正文开始&#x…

腾讯无界微前端框架介绍

一、无界微前端框架概述 无界微前端框架是由腾讯团队推出的&#xff0c;旨在解决现有微前端方案中存在的问题&#xff0c;如适配成本高、样式隔离困难、运行性能不佳、页面白屏、子应用通信复杂、子应用保活机制缺乏等。 技术实现 无界微前端的核心技术是基于Web Component…

数据导入导出(EasyExcel)框架入门指南

写在前面 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站 文章目录 EasyExcel 框架概述依赖APIExcel 实体类注解写 Excel概念介绍写 Excel 通用参数WriteWorkbookWriteSheetWriteTable 代码…

GD32双路CAN踩坑记录

GD32双路CAN踩坑记录 目录 GD32双路CAN踩坑记录1 问题描述2 原因分析3 解决办法4 CAN配置参考代码 1 问题描述 GD32的CAN1无法进入接收中断&#xff0c;收不到数据。 注&#xff1a;MCU使用的是GD32E50x&#xff0c;其他型号不确定是否一样&#xff0c;本文只以GD32E50x举例说…

Vue项目-三级联动的路由跳转与传参

三级联动组件的路由的跳转与传参 三级联动&#xff0c;用户可以点击的&#xff1a;一级分类、二级分类和三级分类 以商城项目为例&#xff0c;Home模块跳转到Search模块&#xff0c;以及会把用户选中的产品&#xff08;产品名字、产品ID&#xff09;在路由跳转的时候&#xff…

Q*算法深度猜猜:从Q-learning优化到智能决策

Q*算法深度猜猜&#xff1a;从Q-learning优化到智能决策 引言 在强化学习&#xff08;Reinforcement Learning&#xff09;中&#xff0c;Q-learning算法作为一种无模型的学习方法&#xff0c;被广泛应用于解决各种决策优化问题。然而&#xff0c;尽管Q-learning在许多场景下…

基于ssm+vue+uniapp的医院挂号预约系统小程序

开发语言&#xff1a;Java框架&#xff1a;ssmuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;M…

Matlab处理H5文件

1.读取h5文件 filenamexxx.h5; h5disp(filename) 2.h5文件保存为mat文件 读取 HDF5 文件中的数据 % 指定 HDF5 文件的路径 filename xxx.h5;% 读取 HDF5 文件中的各个数据集 A241_P h5read(filename, /A241_P); A241_W h5read(filename, /A241_W); A242_P h5read(filen…

Ps:首选项 - 性能

Ps菜单&#xff1a;编辑/首选项 Edit/Preferences 快捷键&#xff1a;Ctrl K Photoshop 首选项中的“性能” Performance选项卡允许用户通过调整内存使用、GPU 设置、高速缓存设置以及多线程处理等选项&#xff0c;来优化 Photoshop 的性能。这对于处理大文件、复杂图像或需要…

【NOI-题解】1137 - 纯粹素数1258 - 求一个三位数1140 - 亲密数对1149 - 回文数个数

文章目录 一、前言二、问题问题&#xff1a;1137 - 纯粹素数问题&#xff1a;1258 - 求一个三位数问题&#xff1a;1140 - 亲密数对问题&#xff1a;1149 - 回文数个数 三、感谢 一、前言 欢迎关注本专栏《C从零基础到信奥赛入门级&#xff08;CSP-J&#xff09;》 本章节主要…

二进制安装php

下载php二进制包&#xff1a; 官网地址&#xff1a;https://www.php.net/releases/ PHP: Releaseshttps://www.php.net/releases/在里边可以选择自己要下载的包进行下载&#xff1b; 下载完成后进行解压&#xff1a; tar xvzf php-7.3.12.tar.gz 解压后 进入目录进行预编…

学习yolo+Java+opencv简单案例(三)

主要内容&#xff1a;车牌检测识别&#xff08;什么颜色的车牌&#xff0c;车牌号&#xff09; 模型作用&#xff1a;车牌检测&#xff0c;车牌识别 文章的最后附上我的源码地址。 学习还可以参考我前两篇博客&#xff1a; 学习yoloJavaopencv简单案例&#xff08;一&#xff0…