zoukankan      html  css  js  c++  java
  • BUUCTF--firmware

    测试文件:https://www.lanzous.com/iaup43c

    文件提取

    binwalk

    首先需要使用binwalk对文件进行提取。安装教程:https://blog.csdn.net/QQ1084283172/article/details/65441110

    binwalk -e fire.bin

    firmware-mod-kit分析

    安装

    sudo yum install git build-essential zlib1g-dev liblzma-dev python-magic
    git clone https://github.com/mirror/firmware-mod-kit.git
    cd firmware-mod-kit/src
    ./configure
    make

    说明

    extract-firmware.sh 解包固件

    build-firmware.sh 重新封包

    check_for_upgrade.sh 检查更新

    unsquashfs_all.sh 解包提取出来的squashfs文件

    将_fire.bin.extracted文件夹中的120200.squashfs文件,转存到firmware-mod-kit文件夹

    mv /root/_fire.bin.extracted/120200.squashfs /root/firmware-mod-kit

    cd firmware-mod-kit

    ./unsquashfs_all.sh 120200.squashfs

    cd squashfs-root/tmp/

    dir

    第三条指令,可以使用绝对路径,不过我报错了,所以用的相对路径。

    提取出的backdoor就是我们需要的文件。

    文件分析

    upx脱壳

    代码分析

    因为题目中是让我们找网址+端口的md5加密结果,因此我们只需要在String window找网址和端口就行。

    找到源处

    bool initConnection()
    {
      char *v0; // r0
      char s; // [sp+4h] [bp-208h]
      int v3; // [sp+204h] [bp-8h]
    
      memset(&s, 0, 0x200u);
      if ( mainCommSock )
      {
        close(mainCommSock);
        mainCommSock = 0;
      }
      if ( currentServer )
        ++currentServer;
      else
        currentServer = 0;
      strcpy(&s, (&commServer)[currentServer]);
      v3 = 36667;
      if ( strchr(&s, 58) )
      {
        v0 = strchr(&s, 58);
        v3 = atoi(v0 + 1);
        *strchr(&s, 58) = 0;
      }
      mainCommSock = socket(2, 1, 0);
      return connectTimeout(mainCommSock, &s, v3, 30) == 0;
    }

    即:echo.byethost51.com:36667

    get flag!

    flag{33a422c45d551ac6e4756f59812a954b}

  • 相关阅读:
    time模块
    time模块,计算时间差
    re模块
    Python之常用文件操作
    Django运行错误常见问题及解决方法1
    用JetBrains PyCharm 2017.2创建运行Django程序
    wsgi Python的WEB框架
    django模块安装环境变量
    Django
    DOM
  • 原文地址:https://www.cnblogs.com/Mayfly-nymph/p/12609657.html
Copyright © 2011-2022 走看看