Some adworld CTFs

内部有空调哦~~菜鸟专属,高手勿扰

re1

F5反编译C代码

分析可知,flag被存入v9,通过输入v5与v9比较,相同则就是正确flag

那么flag应该是作为程序的常量储存了起来

打开string,并没有发现flag

参考资料【反编译的结果不是一定正确的,IDA采用递归下降法进行反编译,它的优点在于很少会在反编译时把数据当作代码来处理,不过这次IDA很明显把flag当成代码,进行了反编译,因此在string界面无法找到flag】

用notepa打开查找,直接明文出现。

game

熟悉的感觉,从1按到8就出来了^o^

用ida分析

查找关键字“flag”,得到两个答案,发现第一个是the flag is不妨点进去查看,发现函数sub_45E940,双击进去,发现两串字符串

嗯~ o( ̄▽ ̄)o,F5,

两串字符

主要函数

分别异或,然后与0x13异或

发现两串字符都是56字符

对应16进制0x38,可以写出python脚本

s1 = [0x12,0x40,0x62,0x5,0x2,0x4,0x6,0x3,0x6,0x30,0x31,0x41,0x20,0x0C,0x30,0x41,0x1F,0x4E,0x3E,0x20,0x31,0x20,0x1,0x39,0x60,0x3,0x15,0x9,0x4,0x3E,0x3,0x5,0x4,0x1,0x2,0x3,0x2C,0x41,0x4E,0x20,0x10,0x61,0x36,0x10,0x2C,0x34,0x20,0x40,0x59,0x2D,0x20,0x41,0x0F,0x22,0x12,0x10,0x0]



s2 = [0x7B,0x20,0x12,0x62,0x77,0x6C,0x41,0x29,0x7C,0x50,0x7D,0x26,0x7C,0x6F,0x4A,0x31,0x53,0x6C,0x5E,0x6C,0x54,0x6,0x60,0x53,0x2C,0x79,0x68,0x6E,0x20,0x5F,0x75,0x65,0x63,0x7B,0x7F,0x77,0x60,0x30,0x6B,0x47,0x5C,0x1D,0x51,0x6B,0x5A,0x55,0x40,0x0C,0x2B,0x4C,0x56,0x0D,0x72,0x1,0x75,0x7E,0x0]



flag = ""

for i in range(0,0x38):


    flag += chr(s1[i]^s2[i]^0x13)

print flag

【range( , , )默认步长是1】

OOOOOOOOOOD

od坏了,等待更新

HELLO,CTF

无情的拖入ida,无情的F5,无情的发现v13与一串16进制数自比较,无情地转文本,无情地发现

无情地验证,成功了

【python>>>bytes.fromhex(“”)直接转】

【ida里这串代码运行不了,可能是py版本问题】

open-source

开源代码,读代码,分析题意,修改程序,搞定。

simple-unpack

题目说有壳,那么就查一下,elf文件的upx壳。

直接打开搜flag,是这样的,看起来就是flag吖

尊重题目,放入kali,解壳

拖出来,查flag,,,,的确是差不多的

logmein

打开一看是elf文件,描述没给是否有壳,还是先查一下,莫得。

放入ida,进入main函数f5查看伪码【忘记说一下,这个文件竟然是64位的】

v7是ll长长整型,转char

写出python脚本

>>> a="harambe"
>>> b=":\"AL_RT^L*.?+6/46"
>>> flag=""
>>> for i in range(len(b)):
...     t=chr(ord(a[i%7])^ord(b[i]))
...     flag+=t
...
>>> flag
'RC3-2016-XORISGUD'
>>>

得出flag,OOOOOOOOk

insanity

elf文件,我相信他没有壳emmmm

直接扔进ida,main函数里莫得信息,查看strings window【shift+f12】

emmmm,就这么简单????

no-strings-attached

拖入ida,啪嗒啪嗒找了一大顿,找到一个解密函数,无奈看不懂,网上一搜,不会ida的动态调试,还是用gdb调试吧。。。

gdb调试

然后解密

-------------本文结束感谢光临寒舍-------------