用ida打开程序,可以看到main函数,调用了一个子函数

点进去子函数,然后按F5,可以看到有100多行的代码。看到这里无从下手。我们先定位关键的字符串。把代码往下拉可以看到有"Congrats you got it!"的字符串。
从这里往会看,可以看到要进入这里有一个分支语句

sub_4020C0是一个关键函数,我们来看看函数的每个参数分别是什么。

  1. 点击v44,亮黄的地方可以看到

    我们进入这个函数,会发现根本无法下手,我们可以先放弃
  2. v12,v45,v48可以发现没有什么实际的意义
  3. 然后来看一下v13,memory将值赋给了v13,所以v13就相当于memory,所以来看一下memory,有两个地方用到了memory
    现在看一下memory里面存着什么


    v50里面存的内容

    进去看一下sub_4021E0这个函数是做什么的。

    如果继续看每个子函数会发现很难分析得清楚,所以我们现在换种思路用动态调试的方法观察这个会发生什么,直接用Ida动态调试。在sub_4021E0前面设置断点。可以发现只是将值赋给v41,这只是一个赋值函数。
    现在我们还有一个问题没有解决v44是什么?
    我们可以打开Strings window看到
    这个路径我们好像从来都没有用到,点击交叉引用看一下。
    他是在sub_402550中被用到,在结合sub_401620的代码可以看到它里面调用了sub_402550,所以v44就是一个从文件夹读出的内容。
    最后看一下sub_4020C0
  v5 = a3;if ( this[4] < a3 )v5 = this[4];if ( this[5] >= 0x10u )this = (_DWORD *)*this;v6 = a5;if ( v5 < a5 )v6 = v5;if ( v6 ){v7 = a4;v9 = v6 < 4;v8 = v6 - 4;if ( v9 ){LABEL_11:if ( v8 == -4 )goto LABEL_20;}else{while ( *this == *(_DWORD *)v7 ){++this;v7 += 4;v9 = v8 < 4;v8 -= 4;if ( v9 )goto LABEL_11;}}v9 = *(_BYTE *)this < *(_BYTE *)v7;if ( *(_BYTE *)this != *(_BYTE *)v7|| v8 != -3&& ((v10 = *((_BYTE *)this + 1), v9 = v10 < *(_BYTE *)(v7 + 1), v10 != *(_BYTE *)(v7 + 1))|| v8 != -2&& ((v11 = *((_BYTE *)this + 2), v9 = v11 < *(_BYTE *)(v7 + 2), v11 != *(_BYTE *)(v7 + 2))|| v8 != -1 && (v12 = *((_BYTE *)this + 3), v9 = v12 < *(_BYTE *)(v7 + 3), v12 != *(_BYTE *)(v7 + 3)))) ){result = -v9 | 1;goto LABEL_21;}
LABEL_20:result = 0;
LABEL_21:if ( result )return result;}if ( v5 >= a5 )result = v5 != a5;elseresult = -1;return result;

可以分析出是判断相不相等的问题。
综上就可以写出脚本得到flag

str1 = "themidathemidathemida"
str2 = ">----++++....<<<<."key =""
flag=""
for i in range(18):key += chr((ord(str1[i]) ^ ord(str2[i]))+22)
for i in key:flag+=chr(ord(i)+9)print(flag)

攻防世界逆向——key相关推荐

  1. 攻防世界逆向高手题的key

    攻防世界逆向高手题之key 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的key . . (这里积累第一个经验) 这道题,嗯~搞了好久,主要是我的IDA是7.5版本的,其他博客上的大多都是7 ...

  2. 攻防世界逆向入门题之open-source

    攻防世界逆向入门题之open-source 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的open-source 下载附件得到源码: #include <stdio.h> #in ...

  3. 攻防世界逆向高手题之dmd-50

    攻防世界逆向高手题之dmd-50 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的dmd-50 下载附件,照例扔入exeinfope中查看信息: 64位ELF文件,无壳,照例扔入IDA64位中 ...

  4. 攻防世界逆向初级训练

    攻防世界逆向新手训练区wp 文章目录 re1 做题实录 分析总结 game 做题实录 分析总结 Hello,CTF 做题实录 分析总结 open-source 做题实录 分析总结 simple-unp ...

  5. 攻防世界逆向高手题之reverse-for-the-holy-grail-350

    攻防世界逆向高手题之reverse-for-the-holy-grail-350 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的reverse-for-the-holy-grail-350 ...

  6. 攻防世界逆向入门题之流浪者

    攻防世界逆向入门题之流浪者 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的流浪者 下载附件,照例扔入exeinfope中查看信息: 32位PE文件无壳,照例扔入ida32中查看伪代码: 是没 ...

  7. 攻防世界逆向高手题之re2-cpp-is-awesome

    攻防世界逆向高手题之re2-cpp-is-awesome 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的re2-cpp-is-awesome 下载附件,照例扔入exeinfope中查看信息: ...

  8. 攻防世界逆向入门题之no-strings-attached

    攻防世界逆向入门题之no-strings-attached 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向入门题的no-strings-attached 下载附件: 扔入Exepeinfo中查壳和其 ...

  9. 攻防世界逆向高手题之re5-packed-movement

    攻防世界逆向高手题之re5-packed-movement 继续开启全栈梦想之逆向之旅~ 这题是攻防世界逆向高手题的re5-packed-movement 下载附件,照例扔入exeinfope中查看信 ...

最新文章

  1. PlantCom:基于内参的宿主相关丰度定量分析揭示植物根系微生物组的微生物总量变化
  2. java安全——数字签名+代码签名
  3. android 代码写命令,monkey基本命令及脚本编写(示例代码)
  4. linux下多线程之pthread_detach(pthread_self())
  5. 平时碰到的一些编程题
  6. c语言数组求出最大值,求给定数组的最大值与次大值
  7. python3.5安装步骤-pycharm安装步骤
  8. 使用免费的卡巴斯基清除木马
  9. nfc卡模式与标准模式_NFC相关标准
  10. HTML/CSS居中对齐的方式大全
  11. 什么叫DMZ区?DMZ区它有什么作用?
  12. 数据分析-PART1--数据获取和步骤
  13. 网络游戏程序员新手入门 [转]
  14. uniapp picker选择器注意点
  15. vrchat新手教程_VRChat入门指南| 最新电脑资讯
  16. c语言求佩尔方程的解,佩尔方程
  17. SIP语音对讲从零到整之(一)sip介绍
  18. 【Python】根据多个列同时进行多条件筛选数据
  19. 【慕课网】Web学习笔记———CSS3 (一)
  20. git/github的使用(入门到中阶)

热门文章

  1. 深度linux不能联网,Deepin Linux 无法上网
  2. 大学计算机四级报名,2016下半年安徽理工大学计算机四级报名
  3. android随机数方法,Android生成随机数的方法实例
  4. sqlserver varchar 对于 sum 运算符无效_在sqlserver上实现自定义函数四舍六入五成双...
  5. JMeter中持续时间设置成永远调度器才会起作用
  6. Oracle索引状态查询与索引重建
  7. zookeeper 3.6.0安装以及基本使用
  8. Memcached与Redis的区别和选择
  9. Python笔记9-----不等长列表转化成DataFrame
  10. Nginx 笔记与总结(12)Nginx URL Rewrite 实例(ecshop)