CTF
  • Introduction
  • IDF 实验室
    • 牛刀小试
      • 被改错的密码
      • ASCII 码而已
      • 聪明的小羊
      • 摩斯密码
      • 啥?
    • CRYPTO 百密一疏
      • 笨笨的小猪
      • 凯撒加密
      • 孔子的学费
      • 特殊的日子
      • 伟人的名字
    • WEB天罗地网
      • COOKIE欺骗
      • 不难不易的js加密
      • 超简单的js题
      • 古老的邮件编码
      • 简单的js解密
      • 你关注最新的漏洞吗
      • 一种编码而已
    • STEGA万里寻踪
      • 图片里的秘密
      • 上帝也哭泣
      • 红与黑
    • PPC初探乾坤
      • 简单编程-字符统计
      • Fuck your brain
      • 谁是卧底
    • REVERSE倒行逆施
      • 简单的PE文件逆向
      • 简单的ELF逆向
      • python ByteCode
    • MISC包罗万象
      • 图片里的英语
      • 抓到一只苍蝇
  • 实验吧
    • WEB
      • 登陆一下好吗??
      • 注入
      • 简单的sql注入
      • Forms
Powered by GitBook
On this page
  • 题目
  • write up

Was this helpful?

  1. IDF 实验室
  2. REVERSE倒行逆施

简单的ELF逆向

Previous简单的PE文件逆向Nextpython ByteCode

Last updated 5 years ago

Was this helpful?

题目

这里这里

write up

看到是Elf文件,表示不懂,所以直接上write_up了。

Write_up里说跟PE文件差不多,自己用IDA一看还真是差不多,所以按照同样的思路跑去找字符串,但是没找到。

回头看到write_up说是在函数开头部分重新定义了,所以关键是跑到那一串地方去把字符串给搞出来:

1

把这些全都转成10进制,然后又由于这回代码取字符串的方式不太一样:

算成10进制后还得除以2,所以用python脚本解决一下:

List = ["EF","C7","E9","CD","F7","8B","D9","8D","BF","D9","DD","B1","BF","87","D7","D8","BF"]
for each in List:
    print(chr(int(each, 16) // 2), end="")

得到前半部分:wctf{ElF_lnX_Ckl_

后半部分还是跟上次的一样:

提取出来是 0823} 组合一起提交了:wctf{ElF_lnX_Ckl_0823} 居然说答案不对,好吧,再观察一下:

if ( v23 != 22 )
    v24 = 1;

关键是多了这句话,而且对比一下正确答案就是v23出了问题。现在知道v23应该=22了,然后怎么运用得到ascii码?

好吧,找到原因了,原来是自己的List抄错了,不是这个22的问题= =

正确的:

List = ["EF","C7","E9","CD","F7","8B","D9","8D","BF","D9","DD","B1","BF","87","D7","DB","BF"]
wctf{ElF_lnX_Ckm_0823}
2
3
http://pan.baidu.com/s/1kTl5wxD