# 你每一次的突然想努力的冲动,都是未来的你在向你求救
# easy_RE
IDA 启动!直接再汇编里看到 Flag, 灰常不错这应该是签到题
1 | mov [rbp+30h+var_90], 66h ; 'f' |
# ke
发现 upx 壳,直接 upx-d,IDA 打开发现就是把输入的每个字符加 1,然后与 enc 进行比较,逆一下用 enc 里的数据减 1 就行
源代码
1 | _main(); |
exp
1 | b="gmbh|D1ohsbuv2bu21ot1oQb332ohUifG2stuQ[HBMBYZ2fwf2~" |
# ELF
IDA 打开看到两个加密 base64_encode 经典的 base64 加密,encode 就是将数据异或 0x20 然后加 16
思路也很简单将数据先进行 base64 解密然后再逆一下 encode 这个函数就行了
源代码
1 | s = (char *)malloc(0x64uLL); |
exp
1 | from base64 import* |
# Segments
IDA 打开提示 shift+f7 直接就明白 flag 被拆分道每个段里,md 拼了好久 www 最发现 name_后面的’_’
没有去掉 服了我是 fw
1 | flag{You_ar3_g0od_at_f1nding_ELF_segments_name} |
# Endian
很简单的就异或 0x12345678 就行了,然后就搞笑了没有出来 cccccc, 发现是小端然后写 exp 开始报错了
浪费了一些时间
源代码
1 | v7 = __readfsqword(0x28u); |
exp
1 | b = [0x75553A1E, 0x7B583A03, 0x4D58220C, 0x7B50383D, 0x736B3819] |
后来看一师傅的 wp 直接用 p32 包一下就行了,ccccccc 我怎么没有想出来,菜死了
1 | enc = [0x75553A1E, 0x7B583A03, 0x4D58220C, 0x7B50383D, 0x736B3819] |
# EzPE
无效的 PE,修一下 PE 头和偏移就行,然后 IDa 打开就是每个数据异或他的索引和他上一个数据的异或值
emmmmm 看代码就知道了,说的有点乱
1 | _main(argc, argv, envp); |
exp
1 | def decrypt(input): |
# Lazy_Activity
查看 FlagActivity, 前面有个 editTextTextPersonName2
1 | editText.getText().toString()final EditText editText = (EditText) findViewById(R.id.editTextTextPersonName2); |
editTextTextPersonName2 直接搜索这个资源找到 flag
1 | flag{Act1v1ty_!s_so00oo0o_Impor#an#} |
# AndroXor
直接看代码吧
1 | public String Xor(String str, String str2) { |
也是考察的异或,拿这两个数据再异或一次就行,提取数据的时候要注意一下,因为我报错了
1 | enc = [14, b'\r', 17, 23, 2, b'K', b'I', b'7', b' ', 30, 20, b'I', b'\n', 2, b'\f', b'>', b'(', b'@', 11, b'\'', b'K', b'Y', 25, b'A', b'\r'] |
嗯… 这次 RE 大部分都是异或,嗯… 逻辑也很简单,嗯… 没有附件的师傅可以给俺要主页有俺 QQ, 嗯…(一万字)…。
emmmm 还是菜
爬了…