REVERSE-PRACTICE-BUUCTF-8

REVERSE-PRACTICE-BUUCTF-8

    • [GUET-CTF2019]re
    • 相册
    • [V&N2020 公开赛]strangeCpp
    • [BJDCTF2020]easy

[GUET-CTF2019]re

elf文件,有upx壳,脱壳后ida分析
字符串交叉引用来到主逻辑函数sub_400E28
逻辑清晰,获取输入,验证输入,重要的是sub_4009AE函数
re-logic
进入sub_4009AE函数,是对输入每个字符的验证,输入长度为32,这里没有验证input[6]
re-sub_4009AE
写脚本,由于程序没有验证input[6],即“#”位置的字符,试出来为“1”时提交成功
re-script

相册

apk文件,用jadx-gui没发现主逻辑
用Apktool Box反编译apk,xiangce1->lib->armeabi->libcore.so
ida分析该so文件
shift+F12,在字符串窗口的最下面发现三段可疑字符串,很像base64
相册-strings
解这三段字符串,由题目的提示可知,flag的内容为完整的邮箱
相册-script

[V&N2020 公开赛]strangeCpp

exe程序,运行后输出了本机系统相关的信息,按任意键结束,无壳,ida分析
在字符串窗口找到一些字符串,提示真正的flag需要找找
strangecpp-strings
字符串交叉引用来到sub_140013AA0函数,该函数就是获取了本机系统信息然后打印,乍一看没什么特殊的地方

__int64 __fastcall sub_140013AA0(__int64 a1, __int64 a2, __int64 *a3)
{char *v3; // rdisigned __int64 i; // rcx__int64 v5; // rax__int64 v6; // rax__int64 v7; // rax__int64 v8; // raxchar v10; // [rsp+0h] [rbp-20h]struct _SYSTEM_INFO SystemInfo; // [rsp+28h] [rbp+8h]__int64 *j; // [rsp+78h] [rbp+58h]__int64 v13; // [rsp+98h] [rbp+78h]__int64 *v14; // [rsp+1A0h] [rbp+180h]v14 = a3;v3 = &v10;for ( i = 94i64; i; --i ){*(_DWORD *)v3 = -858993460;v3 += 4;}sub_1400110AA(&unk_140027033);GetSystemInfo(&SystemInfo);putchar(byte_140021004);putchar(byte_140021005);putchar(byte_140021006);putchar(byte_140021007);putchar(byte_140021019);putchar(byte_14002101A);putchar(byte_140021005);putchar(10);puts("Let me have a look at your computer...");for ( j = v14; *j; ++j ){v13 = *j;sub_140011226("%s\n", v13);}std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_140011127);dword_140021190 = SystemInfo.dwNumberOfProcessors;sub_140011226("now system cpu num is %d\n", SystemInfo.dwNumberOfProcessors);if ( dword_140021190 < 8 ){puts("Are you in VM?");_exit(0);}if ( GetUserNameA(Str1, &pcbBuffer) ){v5 = sub_140011172(std::cout, "this is useful");std::basic_ostream<char,std::char_traits<char>>::operator<<(v5, sub_140011127);}v6 = std::basic_ostream<char,std::char_traits<char>>::operator<<(std::cout, sub_140011127);v7 = sub_140011172(v6, "ok,I am checking...");std::basic_ostream<char,std::char_traits<char>>::operator<<(v7, sub_140011127);if ( !j_strcmp(Str1, "cxx") ){v8 = sub_140011172(std::cout, "flag{where_is_my_true_flag?}");std::basic_ostream<char,std::char_traits<char>>::operator<<(v8, sub_140011127);_exit(0);}system("pause");sub_1400113E3(&v10, &unk_14001DE50);return 0i64;
}

仔细观察发现,在sub_140013AA0函数开始的部分,几个putchar的参数的存储地址并不连续
strangcpp-hint
进入到data段,在“welc”和“om”之间有一个在sub_140013AA0函数中没有用到的数组
strangecpp-hidden
交叉引用这个数组来到sub_140013580函数,分析知道,有一个arg和这个数组的元素依次异或后输出,重要的是求出这个arg
strangecpp-logic
arg首先作为参数传入了sub_140011384函数,返回结果存储在result中,下面的if语句对result和arg都有要求,进入sub_140011384函数,可知resul可由arg求出
strangecpp-sub_140011384
写脚本即可得到flag

#include<stdio.h>
void main()
{unsigned char arr[] = { 0x26, 0x2C, 0x21, 0x27, 0x3B, 0x0D, 0x04, 0x75, 0x68, 0x34,0x28, 0x25, 0x0E, 0x35, 0x2D, 0x69, 0x3D };__int64 result = 607052314;int arg = 0;while (arg <= 14549743){int v5 = arg >> 12;int v6 = arg << 8;if (result ==(v6^v5)*291){printf("%d——", arg);for (int i = 0; i < 17; i++){printf("%c", arr[i] ^ arg);}printf("\n");}arg += 1;}return;
}

运行结果
strangecpp-flag

[BJDCTF2020]easy

exe程序,运行后提示要找flag,无壳,ida分析
main函数没什么特殊的地方
easy-main
在函数窗main函数的上面有一个ques函数,ques函数没有要求输入,但是有输出打印
easy-ques
想要看看ques函数打印了什么东西,要调试这个exe程序,在main函数return前下断点
easy-breakpoint
程序停下后,去到ques函数的第一条指令处,设置为当前IP
easy-setip
在ques函数return前下断点,F9执行完ques函数,打印的内容即为flag
easy-flag

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NuGet的使用、部署、搭建私有服务

目录 前言 什么是NuGet?为什么要使用NuGetNuGet的优点使用 Get-Help NuGetInstall-PackageGet-PackageUninstall-Package制作NuGet库包搭建NuGet服务器上传NetGet库包新增NuGet源总结前言 什么是NuGet? Nuget是一个.NET平台下的开源的项目&#xff0c;它是Visual Studio的…

REVERSE-PRACTICE-BUUCTF-9

REVERSE-PRACTICE-BUUCTF-9[ACTF新生赛2020]usualCrypt[MRCTF2020]Transform[V&N2020 公开赛]CSRe[WUSTCTF2020]level1[ACTF新生赛2020]usualCrypt exe程序&#xff0c;运行后提示输入flag&#xff0c;无壳&#xff0c;ida分析 main函数逻辑清晰&#xff0c;获取输入&…

ASP.NET MVC Beta 新特性之 IValueProvider

在刚发布的ASP.NET MVC Beta版中&#xff0c;在UpdataModel方法中提供了一个带有IValueProvider参数的重载。那么这个IValueProvider有什么用呢&#xff1f; 我们先来看一个简单的场景&#xff0c;例如我们的blog系统有一个Post的对象&#xff0c;Post对象有一个Tags属性和Cat…

REVERSE-PRACTICE-BUUCTF-10

REVERSE-PRACTICE-BUUCTF-10[GWCTF 2019]xxor[HDCTF2019]Maze[WUSTCTF2020]level2[BJDCTF2020]BJD hamburger competition[GWCTF 2019]xxor elf文件&#xff0c;无壳&#xff0c;用ida分析 main函数的逻辑清晰&#xff0c;首先获取输入&#xff0c;为6个int64的值&#xff0c;…

Axure教程 axure新手入门基础(1)

axure新手入门基础(1) 名词解释&#xff1a; 线框图&#xff1a;一般就是指产品原型&#xff0c;比如&#xff1a;把线框图尽快画出来和把原型尽快做出来是一个意思。 axure元件&#xff1a;也叫axure组件或axure部件&#xff0c;系统自带了一部分最基础常用的&#xff0c;网上…

REVERSE-PRACTICE-BUUCTF-11

REVERSE-PRACTICE-BUUCTF-11[FlareOn4]IgniteMe[MRCTF2020]Xor[GKCTF2020]BabyDriver[MRCTF2020]hello_world_go[FlareOn4]IgniteMe exe程序&#xff0c;运行后提示输入flag&#xff0c;无壳&#xff0c;ida分析 主逻辑在start函数中&#xff0c;读取输入后check&#xff0c;验…

Axure教程 axure新手入门基础(2) 简单易上手

https://www.duote.com/tech/35/102713.html (二)Axure rp的线框图元件 l 图片 图片元件拖入编辑区后&#xff0c;可以通过双击选择本地磁盘中的图片&#xff0c;将图片载入到编辑区&#xff0c;axure会自动提示将大图片进行优化&#xff0c;以避免原型文件过大;选择图片时可以…

REVERSE-PRACTICE-BUUCTF-12

REVERSE-PRACTICE-BUUCTF-12[WUSTCTF2020]level3crackMe[FlareOn6]Overlong[WUSTCTF2020]Cr0ssfun[WUSTCTF2020]level3 elf文件&#xff0c;无壳&#xff0c;ida分析 main函数中&#xff0c;获取输入&#xff0c;对输入做base64编码&#xff0c;提示有错误&#xff0c;在程序中…

Axure RP使用基础教程

一、Axure界面介绍 1、页面导航面板&#xff08;Pages&#xff09; Axure的页面管理采用类似操作系统的文件夹和页面文件的管理方式&#xff0c;不同点是&#xff0c;页面文件可以存在子页面&#xff0c;这一点是考虑了页面与页面跳转或者嵌套页面等网页特点。 页面文件管理导…

REVERSE-PRACTICE-BUUCTF-13

REVERSE-PRACTICE-BUUCTF-13firmware[ACTF新生赛2020]Oruga[Zer0pts2020]easy strcmp[GXYCTF2019]simple CPPfirmware .bin&#xff08;二进制&#xff09;文件&#xff0c;由题目提示知是路由器固件逆向 参考&#xff1a;逆向路由器固件之解包 Part1 linux安装好binwalk和fir…

REVERSE-PRACTICE-BUUCTF-14

REVERSE-PRACTICE-BUUCTF-14[FlareOn3]Challenge1[GUET-CTF2019]number_game[GWCTF 2019]re3[网鼎杯 2020 青龙组]singal[FlareOn3]Challenge1 exe程序&#xff0c;运行后提示输入密码&#xff0c;输入错误退出程序&#xff0c;无壳&#xff0c;ida分析 main函数逻辑清晰&…

REVERSE-PRACTICE-BUUCTF-15

REVERSE-PRACTICE-BUUCTF-15[2019红帽杯]xx[ACTF新生赛2020]Universe_final_answer[WUSTCTF2020]level4findKey[2019红帽杯]xx exe程序&#xff0c;运行后直接输入&#xff0c;无壳&#xff0c;ida分析 交叉引用字符串“You win&#xff01;”来到sub_1400011A0函数 主要的逻辑…

【三层架构】——COM/DCOM初识

背景&#xff1a; 在学习三层架构的时候&#xff0c;知道三层分为UI层&#xff08;表现层&#xff09;、BLL层&#xff08;业务逻辑层&#xff09;、DAL层&#xff08;数据访问层&#xff09;&#xff0c;相对于传统的二层架构&#xff08;客户端和数据库&#xff09;来说&…

REVERSE-PRACTICE-BUUCTF-16

REVERSE-PRACTICE-BUUCTF-16[UTCTF2020]basic-reequation[安洵杯 2019]crackMe[FlareOn5]Minesweeper Championship Registration[UTCTF2020]basic-re elf文件&#xff0c;无壳&#xff0c;用ida分析 main函数就是简单的加减乘除运算 shiftF12&#xff0c;在字符串窗口看到fla…

IPC之命名管道

1.管道是通过IO接口存取得字节流&#xff0c; windows中利用得是ReadFile()和WriteFile(),windows利用单一句柄支持双向IO,命名管道也称做FIFO(first in first out) 命名管道得机制&#xff1a;一个进程把数据放到管道里&#xff0c;另一个知道管道名字得进程把数据把取走&…

REVERSE-PRACTICE-BUUCTF-17

REVERSE-PRACTICE-BUUCTF-17[网鼎杯 2020 青龙组]jocker[2019红帽杯]childRE[MRCTF2020]PixelShooter[ACTF新生赛2020]SoulLike[网鼎杯 2020 青龙组]jocker exe程序&#xff0c;运行后提示输入flag&#xff0c;无壳&#xff0c;用ida分析 main函数平衡栈后&#xff0c;F5反汇编…

Excluding Files From Team Foundation Version Control Using .tfignore Files

At one point I was coding on a hobby project, using Visual Studio Online for project management and source control. Because of the technologies involved, a large number of temporary files were being generated that I didn’t want checked in. Visual Studio’…

REVERSE-PRACTICE-BUUCTF-18

REVERSE-PRACTICE-BUUCTF-18[SWPU2019]ReverseMe[FlareOn1]Bob Doge[FlareOn5]Ultimate Minesweeper[GKCTF2020]Chellys identity[SWPU2019]ReverseMe exe程序&#xff0c;运行后提示输入flag&#xff0c;输入错误打印“Try again”&#xff0c;无壳&#xff0c;ida分析 交叉引…

VS2008中Web Reference和Service Reference的区别

很早就发现在vs2008中应用web service有两种方式&#xff0c;即Add Web Reference和Add Service Reference&#xff0c;但是一直不是很清楚这两者有什么区别。趁着今天有空实验一下这两者的区别并记录下来供大家参考。 首先在网上查找&#xff0c;发现有如下两个主要区别&#…

REVERSE-PRACTICE-BUUCTF-19

REVERSE-PRACTICE-BUUCTF-19[RoarCTF2019]polyre[安洵杯 2019]game[SCTF2019]Strange apk[CFI-CTF 2018]IntroToPE[RoarCTF2019]polyre elf文件&#xff0c;无壳&#xff0c;用ida分析 main函数的结构&#xff0c;多重循环&#xff0c;是控制流平坦化&#xff0c;参考&#xf…