REVERSE-PRACTICE-BUUCTF-24

REVERSE-PRACTICE-BUUCTF-24

    • [watevrCTF 2019]Timeout
    • [SUCTF2019]hardcpp
    • [CISCN2018]2ex
    • [UTCTF2020]babymips

[watevrCTF 2019]Timeout

elf文件,无壳,ida分析
main函数中signal,alarm,delay三个函数配合使用是为了反调试
timeout-logic
交叉引用变量"can_continue",来到generate函数,验证"can_continue"是否等于1337,然后打印s
于是可以知道该程序是为了防止用户在main函数返回前修改EIP来执行generate函数从而获得flag
timeout-generate
timeout-s
timeout-ss
直接抠出来s的数据,转成字符串即为flag

data=[119,97,116,101,118,114,123,51,110,99,114,121,116,105,111,110,95,105,115,95,111,118,101,114,114,97,116,101,100,95,121,111,117,116,117,98,101,46,99,111,109,47,119,97,116,99,104,63,118,61,79,80,102,48,89,98,88,113,68,109,48,125]
print(''.join(chr(i) for i in data))
#watevr{3ncrytion_is_overrated_youtube.com/watch?v=OPf0YbXqDm0}

或者是patch程序,把alarm函数的参数增大,或者是在main函数返回后下断点,修改EIP去执行generate函数,都可得到flag

[SUCTF2019]hardcpp

elf文件,无壳,ida分析
main函数中加了混淆,还不能调试,只能硬着头分析
x和y那些都没用,主要的运算和判断逻辑在这里
第109行有个判断,验证enc[i-1]=v15=(s[i]+(s[i-1]%7))^(2+3*(18^s[i-1])),i从1开始,enc是已知的数据,s是输入
由此可以得到s[i]=((enc[i-1])^(2+3*(18^s[i-1])))-(s[i-1]%7)),i从1开始,所以s[0]需要爆破一下
hardcpp-logic
写脚本即可得到flag

enc=[0xF3, 0x2E, 0x18, 0x36, 0xE1, 0x4C, 0x22, 0xD1, 0xF9, 0x8C,0x40, 0x76, 0xF4, 0x0E, 0x00, 0x05, 0xA3, 0x90, 0x0E, 0xA5]
for i in range(32,127):s=[]s.append(i)flag=""flag+=chr(i)for j in range(1,len(enc)+1):tmp=(enc[j-1]^(2+3*(18^s[j-1])))-(s[j-1]%7)s.append(tmp&0xff)flag+=chr(tmp&0xff)if "flag" in flag:print(flag)break
# #flag{mY-CurR1ed_Fns}

[CISCN2018]2ex

mips文件,ida7.5打开
shift+F12,在字符串窗口看到这样一串字符,长度为64
2ex-string
out.txt文件里的字符串"│_r-+_Cl5;vgq_pdme7#7eC0=",最后是个等号,猜测是变表base64
用工具解base64即可得到flag
2ex-flag

[UTCTF2020]babymips

mips文件,无壳,ida7.5打开
main函数,读取输入,将已知的unk_4015F4拷贝到v7,传递v7和输入到check函数,验证输入
babymips-logic
进入check函数,验证输入的长度是否为78,检验input[i]^(i+23)==v7[i]是否成立
babymips-check
写脚本即可得到flag

v7=[0x62, 0x6C, 0x7F, 0x76, 0x7A, 0x7B, 0x66, 0x73, 0x76, 0x50,0x52, 0x7D, 0x40, 0x54, 0x55, 0x79, 0x40, 0x49, 0x47, 0x4D,0x74, 0x19, 0x7B, 0x6A, 0x42, 0x0A, 0x4F, 0x52, 0x7D, 0x69,0x4F, 0x53, 0x0C, 0x64, 0x10, 0x0F, 0x1E, 0x4A, 0x67, 0x03,0x7C, 0x67, 0x02, 0x6A, 0x31, 0x67, 0x61, 0x37, 0x7A, 0x62,0x2C, 0x2C, 0x0F, 0x6E, 0x17, 0x00, 0x16, 0x0F, 0x16, 0x0A,0x6D, 0x62, 0x73, 0x25, 0x39, 0x76, 0x2E, 0x1C, 0x63, 0x78,0x2B, 0x74, 0x32, 0x16, 0x20, 0x22, 0x44, 0x19]
flag=""
for i in range(len(v7)):flag+=chr(v7[i]^(i+23))
print(flag)
# utflag{mips_cpp_gang_5VDm:~`N]ze;\)5%vZ=C'C(r#$q=*efD"ZNY_GX>6&sn.wF8$v*mvA@'}

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

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

相关文章

REVERSE-PRACTICE-BUUCTF-25

REVERSE-PRACTICE-BUUCTF-25特殊的 BASE64[FlareOn1]Javascrap[WMCTF2020]easy_re[NPUCTF2020]BasicASM特殊的 BASE64 exe程序,运行后输入,无壳,ida分析 main函数,读取输入,进行变表base64编码,与rightFla…

REVERSE-PRACTICE-BUUCTF-26

REVERSE-PRACTICE-BUUCTF-26[FlareOn6]FlareBear[SUCTF2018]babyre[GKCTF2020]WannaReverse[FlareOn4]greek_to_me[FlareOn6]FlareBear apk文件,模拟器上运行,创建一个小熊,有三种方式交互,分别为“吃饭”,“篮球”以…

C#的变迁史02 - C# 2.0篇

在此重申一下,本文仅代表个人观点,如有不妥之处,还请自己辨别。 第一代的值类型装箱与拆箱的效率极其低下,特别是在集合中的表现,所以第二代C#重点解决了装箱的问题,加入了泛型。1. 泛型 - 珍惜生命&#x…

REVERSE-PRACTICE-BUUCTF-27

REVERSE-PRACTICE-BUUCTF-27[XMAN2018排位赛]Dragon Quest[羊城杯 2020]easyre[watevrCTF 2019]Repyc[2019红帽杯]calc[XMAN2018排位赛]Dragon Quest elf文件,无壳,ida分析 main函数,读取输入,start_quest函数验证输入&#xff0…

C#的变迁史03 - C# 3.0篇

C# 3.0 (.NET 3.5, VS2008) 第三代C#在语法元素基本完备的基础上提供了全新的开发工具和集合数据查询方式,极大的方便了开发。 1. WPF,WCF,WF 这3个工程类型奠定了新一代.NET开发的客户端模型,通信模型,工作流模型。 …

REVERSE-PRACTICE-BUUCTF-28

REVERSE-PRACTICE-BUUCTF-28[FlareOn6]Memecat Battlestation[b01lers2020]chugga_chugga[INSHack2018]Tricky-Part1[watevrCTF 2019]esreveR[FlareOn6]Memecat Battlestation .Net程序,运行后输入weapon code,用dnSpy打开 在Stage1Form直接找到第一个w…

C#的变迁史04 - C# 4.0 之多线程篇

在.NET 4.0中,并行计算与多线程得到了一定程度的加强,这主要体现在并行对象Parallel,多线程Task,与PLinq。这里对这些相关的特性一起总结一下。 使用Thread方式的线程无疑是比较麻烦的,于是在这个版本中有了改善的版本…

REVERSE-PRACTICE-BUUCTF-29

REVERSE-PRACTICE-BUUCTF-29[FlareOn1]Shellolololol[CFI-CTF 2018]powerPacked[INSHack2018]Tricky-Part2[CFI-CTF 2018]Automated Reversing[FlareOn1]Shellolololol exe程序,直接不能运行,无壳,ida分析 简单F8单步调试发现,在…

C#的变迁史05 - C# 4.0篇

C# 4.0 (.NET 4.0, VS2010) 第四代C#借鉴了动态语言的特性,搞出了动态语言运行时,真的是全面向“高大上”靠齐啊。 1. DLR动态语言运行时 C#作为静态语言,它需要编译以后运行,在编译的过程中,编译器要检查语法的正确性…

REVERSE-PRACTICE-BUUCTF-30

REVERSE-PRACTICE-BUUCTF-30[RCTF2019]DontEatMe[b01lers2020]little_engine[NPUCTF2020]你好sao啊[MRCTF2020]Shit[RCTF2019]DontEatMe exe程序,运行后输入,无壳,用ida分析 交叉引用字符串来到sub_401260函数,读取输入&#xff…

C#的变迁史06 - C# 4.0 之并行处理篇

前面看完了Task对象,这里再看一下另一个息息相关的对象Parallel。 Parallel对象 Parallel对象封装了能够利用多核并行执行的多线程操作,其内部使用Task来分装多线程的任务并试图将它们分配到不同的内核中并行执行。请注意“试图”这个词,Par…

REVERSE-PRACTICE-BUUCTF-31

REVERSE-PRACTICE-BUUCTF-31[羊城杯 2020]login[羊城杯 2020]Bytecode[羊城杯 2020]babyre[ACTF新生赛2020]fungame[羊城杯 2020]login exe程序,运行后输入,无壳,ida分析 没找到主要逻辑,在字符串窗口看到一些“py”的字样&#…

C#的变迁史07 - C# 4.0 之线程安全集合篇

作为多线程和并行计算不得不考虑的问题就是临界资源的访问问题,解决临界资源的访问通常是加锁或者是使用信号量,这个大家应该很熟悉了。 而集合作为一种重要的临界资源,通用性更广,为了让大家更安全的使用它们,微软为我…

PWN-PRACTICE-BUUCTF-1

PWN-PRACTICE-BUUCTF-1test_your_ncripwarmup_csaw_2016ciscn_2019_n_1test_your_nc 附件的main函数直接system("/bin/sh"),nc直接连即可cat flag rip main函数中,gets函数读取一行会造成栈溢出 构造payload覆盖rip,使得return…

C#的变迁史08 - C# 5.0 之并行编程总结篇

C# 5.0 搭载于.NET 4.5和VS2012之上。 同步操作既简单又方便,我们平时都用它。但是对于某些情况,使用同步代码会严重影响程序的可响应性,通常来说就是影响程序性能。这些情况下,我们通常是采用异步编程来完成功能,这在…

REVERSE-PRACTICE-CTFSHOW-1

REVERSE-PRACTICE-CTFSHOW-1逆向签到题re2逆向4逆向5逆向签到题 ida打开即可得到明文flag re2 附件是一个加密过的flag文本和勒索病毒exe 运行程序,输入1,回车,直接退出,ida分析 选项1的逻辑为,打开flag.txt和enfl…

C#的变迁史09 - C# 5.0 之调用信息增强篇

Caller Information CallerInformation是一个简单的新特性,包括三个新引入的Attribute,使用它们可以用来获取方法调用者的信息, 这三个Attribute在System.Runtime.CompilerServices命名空间下,分别叫做CallerMemberNameAttribute&…

REVERSE-PRACTICE-CTFSHOW-2

REVERSE-PRACTICE-CTFSHOW-2re3红包题 武穆遗书数学不及格flag白给re3 main函数,分析可知,将输入的字符串按十六进制转成数字,写到v5,赋给v17[6] 当i等于6时,v16会加上输入的值,然后进入循环,最…

C#的变迁史10 - C# 5.0 之其他增强篇

1. 内置zip压缩与解压   Zip是最为常用的文件压缩格式之一,也被几乎所有操作系统支持。在之前,使用程序去进行zip压缩和解压要靠第三方组件去支持,这一点在.NET4.5中已有所改观,Zip压缩和解压功能已经内置于框架本身。这个功能使…

REVERSE-PRACTICE-CTFSHOW-3

REVERSE-PRACTICE-CTFSHOW-3签退神光签到baby_gay签退 .pyc文件,uncompyle6反编译,得到python源码,分析写在源码注释中 先变表base64,再凯撒加密,向后移动2位 import string c_charset string.ascii_uppercase str…