参考:
https://bbs.pediy.com/thread-251371.htm

qiutruth@qiutruth-virtual-machine:~$ ps -ef | grep hideqiutruth@qiutruth-virtual-machine:~$ pmap -d 4253
4253:   ./hide
住址            Kbytes Mode  Offset           Device    Mapping
0000000000400000     808 r-x-- 0000000000000000 000:00000   [ anon ]
00000000004ca000    2040 ----- 0000000000000000 000:00000   [ anon ]
00000000006c8000      20 rwx-- 0000000000000000 000:00000   [ anon ]
0000000000800000       4 rwx-- 0000000000000000 000:00000   [ anon ]
00000000017b5000     140 rwx-- 0000000000000000 000:00000   [ anon ]
00007fff8c79e000     132 rwx-- 0000000000000000 000:00000   [ stack ]
00007fff8c7d1000      12 r---- 0000000000000000 000:00000   [ anon ]
00007fff8c7d4000       8 r-x-- 0000000000000000 000:00000   [ anon ]
ffffffffff600000       4 r-x-- 0000000000000000 000:00000   [ anon ]
mapped: 3168K    writeable/private: 296K    shared: 0Kqiutruth@qiutruth-virtual-machine:~$ sudo dd if=/proc/$(pidof hide)/mem of=hide_dump1 skip=4194304  bs=1c count=827392qiutruth@qiutruth-virtual-machine:~$ file hide_dump1
hide_dump1: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, missing section headersqiutruth@qiutruth-virtual-machine:~$ sudo dd if=/proc/$(pidof hide)/mem of=hide_dump2 skip=7110656  bs=1c count=1277952qiutruth@qiutruth-virtual-machine:~$ file hide_dump2
hide_dump2: dataqiutruth@qiutruth-virtual-machine:~$ cat hide_dump1 hide_dump2 >hide_dumpqiutruth@qiutruth-virtual-machine:~$ file hide_dump
hide_dump: ELF 64-bit LSB executable, x86-64, version 1 (GNU/Linux), statically linked, stripped

拷贝的原因是程序的可执行段,如何判断我没想明白,有执行权限+4GB内存空间?

静态分析

查看字符串,关键字符串有两处索引
输入格式为qwb{}

分析正确分支

ida没有将其识别称为一个函数,同时关注到程序通过sys_read,sys_write输入输出

若在0x4C8EC2处create function f5后会很奇怪,在与输入存储变量unk_6CCDB0有关的0x4C8EF4处 create function

signed __int64 sub_4C8EF4()
{_BYTE *v0; // rdi__int64 *v1; // rsiunsigned __int64 v2; // rdxsigned __int64 result; // raxif ( strlen((const char *)&unk_6CCDB0) == 21 //长度&& *((_BYTE *)&unk_6CCDB0 + 1) == 'w'&& *((_BYTE *)&unk_6CCDB0 + 2) == 'b'&& *((_BYTE *)&unk_6CCDB0 + 3) == '{'&& *((_BYTE *)&unk_6CCDB0 + 20) == '}' ){sub_4C8CC0(&unk_6CCDB4); //qwb{之后的字符串,XTEA变形sub_4C8E50(&unk_6CCDB4); //异或sub_4C8CC0(&unk_6CCDB4);sub_4C8E50(&unk_6CCDB4);sub_4C8CC0(&unk_6CCDB4);v0 = &unk_6CCDB4;sub_4C8E50(&unk_6CCDB4);v1 = qword_4C8CB0;v2 = 0LL;while ( v2 < 0x10 && *v0 == *(_BYTE *)v1 ){++v2;++v0;v1 = (__int64 *)((char *)v1 + 1);}}__asm { syscall; LINUX - sys_write }result = 60LL;__asm { syscall; LINUX - sys_exit }return result;
}

分析sub_4C8CC0

^ >> +=delta像TEA

__int64 __fastcall sub_4C8CC0(__int64 a1)
{__int64 result; // raxunsigned __int64 v2; // rt1unsigned int v3; // [rsp+18h] [rbp-48h]__int64 v4; // [rsp+1Ch] [rbp-44h]signed int i; // [rsp+24h] [rbp-3Ch]signed int j; // [rsp+28h] [rbp-38h]int v7; // [rsp+40h] [rbp-20h]int v8; // [rsp+44h] [rbp-1Ch]int v9; // [rsp+48h] [rbp-18h]int v10; // [rsp+4Ch] [rbp-14h]unsigned __int64 v11; // [rsp+58h] [rbp-8h]v11 = __readfsqword(0x28u);v7 = 1883844979;v8 = 1165112144;v9 = 2035430262;v10 = 861484132;for ( i = 0; i <= 1; ++i ){v3 = *(_DWORD *)(8 * i + a1);v4 = *(unsigned int *)(a1 + 4 + 8 * i);for ( j = 0; j <= 7; ++j ){v3 += (*(&v7 + (BYTE4(v4) & 3)) + HIDWORD(v4)) ^ ((((unsigned int)v4 >> 5) ^ 16 * v4) + v4);HIDWORD(v4) += 0x676E696C;LODWORD(v4) = ((*(&v7 + ((HIDWORD(v4) >> 11) & 3)) + HIDWORD(v4)) ^ (((v3 >> 5) ^ 16 * v3) + v3)) + v4;}*(_DWORD *)(a1 + 8 * i) = v3;*(_DWORD *)(a1 + 4 + 8 * i) = v4;}v2 = __readfsqword(0x28u);result = v2 ^ v11;if ( v2 != v11 )result = ((__int64 (*)(void))loc_4C8B9A)();return result;
}

后面按着参考链接的步骤来
最后的结果注意file后是小端还是大端,LSB低存底高存高
qwb{f1Nd_TH3HldeC0dE}

强网杯2018逆向 hide lebel:linux脱壳 / create function / mmap / XTEA变形 / 大小端相关推荐

  1. 强网杯2018 - nextrsa - Writeup

    强网杯2018 - nextrsa - Writeup 原文地址:M4x@10.0.0.55 所有代码均已上传至我的github 俄罗斯套娃一样的rsa题目,基本把我见过的rsa套路出了一遍,值得记录 ...

  2. 强网杯 2018 opm

    强网杯 2018 opm 前言 这篇WP是强网杯过去了很久之后才出的, 参考的是极目楚天舒师傅的博客, 这位师傅是一位CTF老赛手, 最近复出.由于图片中不能CTRL+F出文字, 本文章尽量避免使用图 ...

  3. 强网杯2019逆向 lebel:WASM,XTEA

    参考: https://xz.aliyun.com/t/5170 https://www.anquanke.com/post/id/179556 https://developer.mozilla.o ...

  4. 强网杯2019逆向 just re lebel:string2hex(string2decimal是atoi) / ida识别字符串有点小Bug? / rdtsc / 3DES(可PEiD插件识别)

    静态分析 定位关键函数 通过字符串定位到关键函数,输入为flag{}括号里的值,长度应该为26 注意到函数指针byte_4018A0,联想到了SMC,会有写入它的地方 if ( sub_401610( ...

  5. 2019强网杯crypto writeup

    本次write包含以下题目 copperstudy randomstudy 强网先锋-辅助 copperstudy 题目描述 nc 119.3.245.36 12345 连上去返回 [+]proof: ...

  6. 第二届全国强网杯Web 题three hit学习心得(伪write up)

    前言:本人CTF-WEB入门,有参赛,赛后参考了很多write up想解出此题,无奈理解能力有限,看不懂很多大佬的思路,最后看 酷辣虫上的一篇大佬write up才弄明白. 现将学习心得总结如下,说得 ...

  7. Linux一句命令之判断大小端序

    笔者在开发Linux应用程序时,由于判断大小端序的问题,使用的方法是用C语言判断,方法是可以判断得到系统是什么端序,但是太麻烦了.笔者是比较懒的人,不想写那么多代码,想一句命令就解决端序判断的问题. ...

  8. 强网杯2021 ctf线上赛ezmath wp(#超详细,带逆向新手走过一个又一个小坑)

    文章目录 引言 一.分析文件类型 二.初步分析 1 运行情况 2 IDA初步分析 三.详细分析 1 sub_13F3函数分析 2 查找蛛丝马迹 (1)mprotect (2)重写unk_2010 3 ...

  9. ping cat.flag.php,关于2020年强网杯-强网先锋-主动的赛题解析

    原标题:关于2020年强网杯-强网先锋-主动的赛题解析 一.基本信息(总概述) 本题涉及知识点: 命令执行 正则匹配 linux命令绕过 二.基本环境和工具 Linux系统 PHP+Apache Fi ...

最新文章

  1. IT工作者,你们的爱情是这样的吗?
  2. 原生js实现Object.assign和Object.create
  3. 养成一个习惯需要多久?
  4. vm无法删除干净老版本,新版本无法安装解决
  5. checkVector()
  6. 2015华为校招机试题
  7. PresentViewController详解
  8. android uinput 按键_android 使用uinput模拟输入设备的方法
  9. 危难时刻,每个人都应该站出来
  10. django+nginx+uwsgi项目部署文档整理
  11. No dashboards are active for the current data set. 解决tensorboard无法启动和显示问题
  12. php安装包解压后,ps下载后怎么解压安装
  13. php短信接代码,php短信接口代码
  14. 机器学习最简单算法——KNN算法(K-Nearest Neighbor)
  15. 深度学习#1.有监督学习和无监督学习
  16. 中国显示器粘合胶市场趋势报告、技术动态创新及市场预测
  17. C++ for循环的几种使用方法
  18. 区块链开发用什么语言呢?区块链与编程语言的关系
  19. python爬取电影天堂新片精品模块电影列表,并用迅雷下载
  20. strtol strtoll strtoul strtoull应用

热门文章

  1. Java中JRE指什么呢?
  2. mysql子查询效率高_mysql利用子查询效率怎么样
  3. 如何理解IT、OT、CT?边缘计算
  4. Vue富文本编辑器vue-quill-editor-使用-bug问题-教程
  5. R语言和医学统计学(6):重复测量方差分析
  6. mac数据恢复easyrecovery mac版
  7. linux实现对上传文件的定时备份、增量备份
  8. Java正则表达式总结 ^_^
  9. Python脚本一键找出哪些微信好友删了你(附源码)
  10. js实现唐伯虎‘点‘秋香