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调试
然后解密