zoukankan      html  css  js  c++  java
  • RCTF 2017 easyre153

    die查一下发现是upx壳 直接脱掉

    ELF文件 跑一下:

    没看懂是什么意思 随便输一个数就结束了

    ida打开 看一下:

    pipe是完成两个进程之间通信的函数 1是写,0是读

    fork是通过系统调用创建一个“子进程”的函数

    fork的返回值,在子进程里面是0,在父进程里是子进程的进程id

    所以我们可以很容易看出来 在子进程里面,由于v5==0,所以会输出刚刚我们看到的 OMG!!!! I forgot kid's id 然后将69800876143568214356928753通过pipe传给父进程

    完成这个任务后,子进程就会exit(0)

    至于父进程,由于v5!=0,会跳过子进程刚刚执行的部分,直接读取子进程传给他的那一串数字 并且读取用户输入的v6

    如果v6==v5 那么就会继续进行下面的操作

    所以在新的终端里面用 ps -A 命令找到进程id:

    可以看到子进程9403已经被杀死了,在原来的终端里输入9403:

    但是提醒的是 flag is not here ......

    那么打开lol函数:

    应该是很简单的操作 于是:

    a1='69800876143568214356928753'
    s=''
    s+=chr( 2 * ord(a1[1]))
    s+= chr(ord(a1[4]) + ord(a1[5]))
    s+= chr(ord(a1[8]) + ord(a1[9]))
    s+= chr(2 * ord(a1[12]))
    s+= chr(ord(a1[18]) + ord(a1[17]))
    s+= chr(ord(a1[10] )+ ord(a1[21]))
    s+= chr(ord(a1[9] )+ ord(a1[25]))
    print(s)

    输出flag:

    rhelheg

    最后提交必须是RCTF{rhelheg}......有点坑

  • 相关阅读:
    html——黑体、斜体、下划线及删除线
    <转>DataGridView分页控件
    (转)Log4J 最佳实践之全能配置文件
    C# 单例代码
    MySql基本语句
    .NET中windows服务如何获取自己的安装路径
    web开发网址收藏...
    将字符串转换为json对象_正确语法
    (转)理解矩阵一、二、三
    将数据写入EXCEL多个表
  • 原文地址:https://www.cnblogs.com/dyhaohaoxuexi/p/10684288.html
Copyright © 2011-2022 走看看