这里也是没有做出来,因为有隐藏函数的原因(第一次见)

攻防世界XCTF 3rd-RCTF-2017 easyre153学习笔记_rhelheg-CSDN博客

攻防世界逆向高手题之easyre-153-CSDN博客

这里提一下pipe(pipedes); fork() 两个函数

  • (pipe(pipedes));

pipe 是个linus编程函数,是个管道,也就是一种把两个进程之间的标准输入和标准输出连接起来的机制,从而提供一种让多个进程间通信的方法。

#include<unistd.h>
int pipe(int filedes[2]);

pipe函数可以定义一个二元的数组,其中第一个元素只读,第二个元素只可作写操作

返回值:
成功,返回0,否则返回-1。参数数组包含pipe使用的两个文件的描述符。pipedes[0]:读管道,pipedes[1]:写管道

必须在fork()中调用pipe(),否则子进程不会继承文件描述符。两个进程不共享祖先进程,就不能使用pipe

  • fork函数:

一个进程,包括代码、数据和分配给进程的资源。

fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间,然后把原来的进程的所有值都复制到新的新进程中,只有少数值与原来的进程的值不同,相当于克隆了一个自己。

在这里着重学习一下ida没有运行函数的情况

我们会发现在这题中lol函数只有一句printf,这与我们的常识有很大的偏差

这里我们就去汇编的窗口看看代码是不是就真的如描述的这样子

先在函数这一行右键,同步到,这时候的函数在别的窗口也是绿色的了,这样子就比较明显了

然后看汇编窗口

会发现有很多的代码,说明绝对不可能是printf这么简单的

然后我们往后分析,发现代码结束的地方就存在了一个必然的跳转:

在lol函数结尾处【ebp+var_c】被赋值为0,然后与1做比较,这。。。不就是只有一个结果了吗,所以说这里可以知道zf位一直为0,发生jnz跳转

所以说上述lol函数的操作都没有太大的意义,所以ida就没有运行这个函数的内容了,这里的话我们只需要把造成永跳转的代码nop掉即可,即B0-B6的代码

再对lol函数U C P即可

写出逆向脚本即可

key1="69800876143568214356928753"
flag=""
flag+=chr(2*ord(key1[1]))
flag+=chr(ord(key1[4])+ord(key1[5]))
flag+=chr(ord(key1[8])+ord(key1[9]))
flag+=chr(2*ord(key1[12]))
flag+=chr(ord(key1[18])+ord(key1[17]))
flag+=chr(ord(key1[10])+ord(key1[21]))
flag+=chr(ord(key1[9])+ord(key1[25]))
print(flag)

easyre-153的更多相关文章

  1. 题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个 "水仙花 数 ",因为153=1的三次方+5的三次方+3的三次方。

    题目:打印出所有的 "水仙花数 ",所谓 "水仙花数 "是指一个三位数,其各位数字立方和等于该数本身.例如:153是一个 "水仙花 数 ", ...

  2. 新概念英语(1-53)An interesting climate

    新概念英语(1-53)An interesting  climate What's the favourite subject of conversation in England? A:Where ...

  3. leetcode 153. Find Minimum in Rotated Sorted Array 、154. Find Minimum in Rotated Sorted Array II 、33. Search in Rotated Sorted Array 、81. Search in Rotated Sorted Array II 、704. Binary Search

    这4个题都是针对旋转的排序数组.其中153.154是在旋转的排序数组中找最小值,33.81是在旋转的排序数组中找一个固定的值.且153和33都是没有重复数值的数组,154.81都是针对各自问题的版本1 ...

  4. at org.apache.hadoop.util.RunJar.main(RunJar.java:153)

    关于手动编译hadoop入门例子WordCount并执行 之前做的例子都是用hadoop中已经编译好jar包来运行示例的但是这次想要手动编译个实例,练下手没想到还是遇到点了小困难 [root@cent ...

  5. 【Android】15.5 例15-3—Notification的各种属性演示

    分类:C#.Android.VS2015: 创建日期:2016-02-29 一.简介 利用这个例子,可测试通知的各种属性以及这些不同属性选项呈现的效果. 另外,在这个例子中,还演示了如何读写SD中的图 ...

  6. DistroWatch评估XStream桌面153版本

    导读 XStreamOS是一个由Sonicle创建的Solaris的一个版本.XStream桌面将Solaris的强大带给了桌面用户,同时新手用户很可能有兴趣体验一下.DistroWatch对于XSt ...

  7. 编写高质量代码改善C#程序的157个建议——建议153:若抛出异常,则必须要注释

    建议153:若抛出异常,则必须要注释 有一种必须加注释的场景,即使异常.如果API抛出异常,则必须给出注释.调用者必须通过注释才能知道如何处理那些专有的异常.通常,即便良好的命名也不可能告诉我们方法会 ...

  8. LeetCode:寻找旋转排序数组中的最小值【153】

    LeetCode:寻找旋转排序数组中的最小值[153] 题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0 ...

  9. Leetcode 153.寻找旋转数组中的最小值

    寻找旋转数组中的最小值 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 请找出其中最小的元素. ...

  10. Leetcode之二分法专题-153. 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array)

    Leetcode之二分法专题-153. 寻找旋转排序数组中的最小值(Find Minimum in Rotated Sorted Array) 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ...

随机推荐

  1. AI转换视频风格:Stable Diffusion+TemporalKit

    话不多说,开干! 基本方法 首先通过 Temporal-Kit 这个插件提取视频中的关键帧图片,然后使用 Stable Diffusion WebUI 重绘关键帧图片,然后再使用 Temporal-K ...

  2. Linux 命令:diff

    用途 示例 备注 查看区别 diff file_1 file_2 不加选项 并排输出 diff file_1 file_2 -y -W 50 类似vimdiff 生成patch diff -ruN f ...

  3. ubuntu下安装mysqlclient报错

    输入以下代码: 1 解决方法: 2 sudo apt-get install libmysqlclient-dev 3 4 再次安装: 5 pip3 install mysqlclient 文章链接: ...

  4. pandas 利用openpyxl设置表格样式

    writer = pd.ExcelWriter('/home/leo/Desktop/项目测试/922904.xlsx', engine='openpyxl') new_data.to_excel(w ...

  5. 静态vlan的划分

    静态vlan的划分 1,toupu图 2,配置id与子网掩码 2.1,pc,server的ip与子网配置 pc5 pc6 pc7 pc8 server1 server2 3,vlan的静态划分 1,v ...

  6. [elasticsearch]部署安装单节点和集群

    单点安装 进入安装目录:cd /usr/local 获取安装包: wget http://172.29.50.31/download/ProgramPackage/elasticsearch/elas ...

  7. form 表单恢复初始数据

    1 表单数据的保存和恢复方法 1.1 前端数据保存方法 在前端,我们可以使用两种方法来保存表单数据:LocalStorage 和 Cookie. 使用 LocalStorage 保存数据:LocalS ...

  8. 一种创新的 Hybird App 技术开发模式

    Hybrid这个词,在App开发领域,相信大家都不陌生.Hybrid App是指介于web-app.native-app这两者之间的app,它虽然看上去是一个Native App,但只有一个UI We ...

  9. 解放生产力orm并发更新下应该这么处理求求你别再用UpdateById了

    解放生产力orm并发更新下应该这么处理求求你别再用UpdateById了 背景 很多时候为了方便我们都采用实体对象进行前后端的数据交互,然后为了便捷开发我们都会采用DTO对象进行转换为数据库对象,然后 ...

  10. Iphone常用工具

    iFunBox itools 百度助手 崩溃日志的路径 /var/mobile/Library/Logs/CrashReporter