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

攻防世界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. Blazor 跨平台的、共享一套UI的天气预报 Demo

    1. 前言 很久之前就读过 dotnet9 大佬的一篇文章,MAUI与Blazor共享一套UI,媲美Flutter,实现Windows.macOS.Android.iOS.Web通用UI,没读过的可以 ...

  2. rsync 命令

    linux上的rsync命令详解 15个rsync命令实施 -z: --compress 使用压缩机制 -v: --verbose 打印详细信息 -r: --recursive 以递归模式同步子目录 ...

  3. Unsupervised Learning of Depth and Ego-Motion from Video(CVPR2017)论文阅读

    深度估计问题 从输入的单目或双目图像,计算图像物体与摄像头之间距离(输出距离图),双目的距离估计应该是比较成熟和完善,但往单目上考虑主要还是成本的问题,所以做好单目的深度估计有一定的意义.单目的意思是 ...

  4. 2021-3-9 excel导出

    public void ExportExcel(DataTable dt) { //要添加epplus的nuget包 ExcelPackage.LicenseContext = LicenseCont ...

  5. 达梦数据库: SQL查询报错《不是 GROUP BY 表达式解决方法》

    报错信息: ****: 第4 行附近出现错误: 不是 GROUP BY 表达式 修改办法: 达梦可以配置兼容参数,COMPATIBLE_MODE=4,静态参数,需要重启数据库后生效! sp_set_p ...

  6. 《VTK图形图像开发进阶》第1-2章——一个稍微复杂的VTK程序

    VTK概览 数据可视化主要是通过计算机图形学的方法,以图形.图像等形式清晰有效地传递.表达信息,VTK是数据可视化的工具包. VTK全称(Visualization Toolkit),即可视化工具包, ...

  7. Java学习之进制之间的转换

    import java.util.*; public class Jinzhi { public static void main(String[] args) { /** * 总结: * 二进制转换 ...

  8. flink-cdc同步mysql数据到elasticsearch

    1,什么是cdc CDC是(Change Data Capture 变更数据获取)的简称.核心思想是,监测并捕获数据库的变动(包括数据 或 数据表的插入INSERT.更新UPDATE.删除DELETE ...

  9. Effective C++ 笔记(二)

    16.保证异常安全 1 void PrettyMenu::changBackground(std::istream &imgSrc) 2 { 3 lock(&mutex); 4 del ...

  10. erlang和rabbitMq在ubuntu上的安装过程

    安装rabbitMQ的前提是安装上erlang,所以从erlang安装开始. 安装erlang 1,先升级一下 $:sudo apt-get update 如果软件源有问题 修改etc/apt/sou ...