逆向ctf-婉若游龙

2023-11-11 08:59
文章标签 ctf 逆向 婉若游龙

本文主要是介绍逆向ctf-婉若游龙,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、题目介绍

题目来源于看雪论坛CTF题库->题目要求为:

        本题Flag值为CTFHUB用户的序列号。

题目资源链接:https://pan.baidu.com/s/16ySHvatanvHf07t71sECJQ 
提取码:0id0 

二、解题过程

先将得到的程序运行起来康康:

可以看出软件有两个button,一个为Check Hardcoded,一个为Name/Serial Check。尝试输入并点按钮在Hard Coded中输入admin结果显示为please try again,在name中输入abcdefg,Serial中输入123456点击下方按钮效果为please try again,不输入name提示please enter your serial number。从这里可以看出大概的意思了,注册该软件可以输入hard coded注册也可以输入name和serial注册。

老规矩既然是exe文件先上工具exeinfope进行查壳:

检查结果表示软件没有加壳,直接上OD进行动态分析,进入OD后程序到达程序入口OEP处,根据之前对运行软件的操作,可以用字符定位到想要的代码。操作为鼠标右键-》中文搜索引擎-》智能搜索结果如下:

找到想要的字符串,双击进入定位到:

这里可以发现程序调用了两个MessageBoxA函数,一个显示成功注册信息一个显示失败注册信息。继续往上面找找看看什么地方进行跳转,条件如何:

jnz short 004016E2命令 进行判断eax和ecx,条件不满足就跳转注册失败。反之,条件满足就往下执行进入注册成功界面。哦哦哦!!原来是这样,那么就去找做对比的条件从哪里来的呢?继续往上看,发现:

哟西!!!原来是调用了两个GetWindowTextA函数进行获取信息,并且分别将获取的信息存入对应内存中。好的继续往下看看。

代码解释如图所示,也可在算法原理中看看。

三、算法原理

账号部分:将帐号name的每个字符取出,经过除10取余,和字符位数相异或,再加2的计算处理后存到内存中去(也就是edi中),相关c语言可以表示为:

  lenn=strlen(name);for(i=0;i<lenn;i++){tm=name[i];tm%=10;tm^=i;tm+=2;if(tm>=10){tm-=10;}hname[i]=tm;}

Serial部分:计算比较简单,就是serial的每个字符ascii码除于10的余数存到内存中。对应c语言表示和上面类似。

注册成功的条件就是将存入两部分内存中的对应数进行比较,必须每一位都相同则成功注册,反之一位不同就失败。

四、注册机代码

#include<stdio.h>#include<string.h>main(){char name[19]="";char serial[19];char hname[19];char hserial[19];int lenn;int lens;char ch;int tm;int i=0;printf("输入帐号:");scanf("%s",name);printf("\n");lenn=strlen(name);for(i=0;i<lenn;i++){tm=name[i];tm%=10;tm^=i;tm+=2;if(tm>=10){tm-=10;}hname[i]=tm;}printf("注册码:");for(i=0;i<lenn;i++){printf("%c",(hname[i]+70));}printf("\n");system("pause");}

OVER!!!!  有不足之处请指出!!蟹蟹。

这篇关于逆向ctf-婉若游龙的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/388971

相关文章

Android逆向(反调,脱壳,过ssl证书脚本)

文章目录 总结 基础Android基础工具 定位关键代码页面activity定位数据包参数定位堆栈追踪 编写反调脱壳好用的脚本过ssl证书校验抓包反调的脚本打印堆栈bilibili反调的脚本 总结 暑假做了两个月的Android逆向,记录一下自己学到的东西。对于app渗透有了一些思路。 这两个月主要做的是代码分析,对于分析完后的持久化等没有学习。主要是如何反编译源码,如何找到

【CTF Web】BUUCTF Upload-Labs-Linux Pass-13 Writeup(文件上传+PHP+文件包含漏洞+PNG图片马)

Upload-Labs-Linux 1 点击部署靶机。 简介 upload-labs是一个使用php语言编写的,专门收集渗透测试和CTF中遇到的各种上传漏洞的靶场。旨在帮助大家对上传漏洞有一个全面的了解。目前一共20关,每一关都包含着不同上传方式。 注意 1.每一关没有固定的通关方法,大家不要自限思维! 2.本项目提供的writeup只是起一个参考作用,希望大家可以分享出自己的通关思路

转:android ro.debuggable属性调试修改(mprop逆向)

android ro属性调试修改(mprop逆向)      大家都知道如果需要调试android 的程序,以下两个条件满足一个就行。第一是apk的配置文件内的AndroidManifest.xml的 android:debuggable=”true”,第二就是/default.prop中ro.debuggable=1。两种方式第一种通常是解包添加属性再打包,随着加壳软件以及apk校验等,容易出

某里227逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解阿里227版本滑块参数n的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有需要可联系我。 一

【MyBatis学习14】MyBatis的逆向工程生成代码

1. 什么是逆向工程 mybatis的一个主要的特点就是需要程序员自己编写sql,那么如果表太多的话,难免会很麻烦,所以mybatis官方提供了一个逆向工程,可以针对单表自动生成mybatis执行所需要的代码(包括mapper.xml、mapper.java、po..)。一般在开发中,常用的逆向工程方式是通过数据库的表生成代码。 2. 使用逆向工程 使用mybatis的逆向工程,需要导入逆向

js逆向--cai招网

js逆向--cai招网 一、寻找加密入口1、抓包2、关键字搜索寻找加密入口 二、调试js三、python代码实现 一、寻找加密入口 1、抓包 目标数据来源网址为:https://search.bidcenter.com.cn/search?keywords=%E5%85%AC%E5%85%B1%E4%BD%8F%E5%AE%85,打开开发者工具进行抓包。 目标响应数据被加密。

NRF51822 小黄车智能锁 逆向工程

笔者在夜跑时发现有人将拆下的小黄车智能锁丢弃在花园角落,于是萌生了拆解的想法。 拆开外壳后发现MCU 是NRF51822 ,并且预留了Jlink 调试接口,更萌生了逆向这个电路板的想法 下面是 各个智能锁厂家提供的方案: 摩拜单车:STM32F1+GSM+GPS 使用芯片 STM32F401 + NRF51802(BLE)+TD1030 泰斗定位芯片+BQ25895(充电管理)+C3Hx(

某城user_dun,js逆向分析

声明: 该文章为学习使用,严禁用于商业用途和非法用途,违者后果自负,由此产生的一切后果均与作者无关。 本文章未经许可禁止转载,禁止任何修改后二次传播,擅自使用本文讲解的技术而导致的任何意外,作者均不负责,若有侵权,请联系作者立即删除! 前言 这次会简单的讲解某城ly headers中参数userdun的逆向分析流程以及简单的补环境,如果有疑问可以在评论区交流讨论,我看到会及时回复的,另外,有

【js逆向专题】9.SM国密系列

本教程仅供学习交流使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,请各位自觉遵守相关法律法规。 目录 一.算法简介1.1 算法分类1.1.1 `SM2` 椭圆曲线公钥加密算法1.1.2` SM4 `分组加密算法 二.算法实现1. JavaScript实现1. `SM2`2. `sm3`3. `sm4` 2`python`实现1. `sm2`2.`sm3`3. `s

Mybatis 逆向生成工具mybatis-generator-core-1.3.2.jar的使用

mybatis-generator-core-1.3.2.jar用来生成我们的项目代码,今天分享一下,这个工具,神器之处,在于不仅仅生成dao,mapper还有service层,web层都可以根据数据库反射生成出来。上图 如图,使用mybatis,无非就用××××EntitySqlProvider或××××EntityMapper.xml两种形式书写sql语句,生成方法本文均提供 展开图