REVERSE-PRACTICE-CTFSHOW-5

  • re2_归心
  • Mud
  • [吃鸡杯]ezmore
  • [吃鸡杯]有手就行

re2_归心

exe程序,运行后要求输入flag,ida分析
函数窗没找到主逻辑函数,shift+F12看字符串窗口
发现有java/lang/String,com/exe4j/runtime/WinLauncher等字符串
再想到提示"你应该见过python代码打包成的exe,猜猜这是什么语言"
这个exe应该是用exe4j生成的

exe4j生成exe的过程中要导入jar包,运行exe的时候实际上是运行导入的jar包
也就是说,运行exe的时候,jar包被取出存到了本地
用工具XSearch搜索"readme.jar",在本地的C盘下找到jar包

把找到的jar包丢进jadx-gui,可以看到明文flag

Mud

exe程序,运行后玩游戏,提示"打败王重阳"
upx脱壳,ida分析
一通乱找,在sub_402D9F->sub_402446->sub_402368处找到参数为"王重阳"
往下走,在sub_4023CE函数,最后的printf,找到flag
ida中显示中文的方法,选中数据,alt+a,create C-style

[吃鸡杯]ezmore

exe程序,运行后是个目录,可以浏览文件,下载文件
选项1不能直接看到flag
选项2下载flag文件需要下载码
ida分析,
main->dd922ad47494fc02c388e12c00eacDownload
输入的下载码进入e2edef40ecaa776b8d32d58416998验证

e2edef40ecaa776b8d32d58416998中,传入的下载码需要和程序生成的Str2比较

直接在比较的if处下断点,起调试
选项2,输入文件编号8,随便输入下载码(不能是0)
程序断下来后,可以看到Str2为"neft"
再次运行exe,flag为md5(“neft”)==fc425a880deaaa7ffe4777a6232c61a3

[吃鸡杯]有手就行

exe程序,运行后输入,ida分析
输入的长度为27,然后验证输入

check实际上就是对输入进行前向异或的运算,然后和已知的Buf2比较

写脚本解,结果是fake flag

ans=[99,23,113,2,106,5,114,9,109,2,93,36,75,62,97,13,100,15,106,53,83,50,89,60,3,60,65]
for i in range(len(ans)-1,0,-1):ans[i]^=ans[i-1]
print("".join(chr(i) for i in ans))
#ctfshow{do_you_like_fake??}

然后在函数窗发现sub_401F20函数
sub_401F20->sub_4014D0是RC4的初始化函数,不过在第10行有点改动
密钥为"keykeykey"

sub_401F20->sub_401600,找到密文unk_403000
直接解改掉初始化的RC4,并没有得到flag
sub_401F20->sub_4013D0看到还有个"+7"的运算

将解RC4出来的结果再减去7,即可得到flag

#include<stdio.h>
void rc4_init(unsigned char* s, unsigned char* key, unsigned long Len_k) //初始化函数
{int i = 0, j = 0;char k[256] = { 0 };unsigned char tmp = 0;for (i = 0; i < 256; i++) {s[i] = 256 - i;k[i] = key[i % Len_k];}for (i = 0; i < 256; i++) {j = (j + s[i] + k[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;}
}
void rc4_crypt(unsigned char* Data, unsigned long Len_D, unsigned char* key, unsigned long Len_k) //加解密
{unsigned char s[256];rc4_init(s, key, Len_k);int i = 0, j = 0, t = 0;unsigned long k = 0;unsigned char tmp;for (k = 0; k < Len_D; k++) {i = (i + 1) % 256;j = (j + s[i]) % 256;tmp = s[i];s[i] = s[j];s[j] = tmp;t = (s[i] + s[j]) % 256;Data[k] = Data[k] ^ s[t];}
}
void main()
{unsigned char key[] = "keykeykey";                      unsigned long key_len = sizeof(key) - 1;unsigned char data[] = { 0xDC, 0x47, 0x7F, 0x6E, 0x9A, 0xD8, 0x60, 0x77, 0xF4, 0xB0,0x8C, 0x54, 0xB0, 0xAA, 0x26, 0x23, 0x02, 0x42, 0x8E, 0xBA,0x90, 0x8C, 0xAB, 0x86, 0x24, 0x6E, 0xF8 };rc4_crypt(data, sizeof(data), key, key_len);for (int i = 0; i < sizeof(data); i++){printf("%c", data[i]-7);}
}
//ctfshow{y0u_g0t_t4e_5ecret}

REVERSE-PRACTICE-CTFSHOW-5相关推荐

  1. ctfshow逆向reverse笔记

    re1 逆向签到题 直接ida打开就可以看到flag.可以直接找main函数. flag{7ujm8ikhy6} re2 用ollydebug打开,我的ida不好使了.... 这里是简单的异或 DHm ...

  2. linux内核路由反向检查,反向路径过滤——reverse path filter

    反向路径过滤--reverse path filter 一.原理 先介绍个非对称路由的概念 参考<Understanding Linux Network Internals>三十章, 30 ...

  3. CTFshow sql注入 上篇(web171-220)

    目录 前言 题目 web 171(万能密码) web 172(回显内容过滤,base64或者hex编码绕过) web 173(回显内容过滤,base64或者hex编码绕过) web 174 (布尔盲注 ...

  4. java中Collections常用方法总结(包括sort,copy,reverse等)

    1.sort(Collection)方法的使用(含义:对集合进行排序). 例:对已知集合c进行排序public class Practice {public static void main(Stri ...

  5. A Guide To Reverse Tethering

    By Kevin Pocock on February 04, 2013 Using a mobile device such as a smartphone to act as a hotspot ...

  6. CTFSHOW WEB入门

    ----------信息搜集---------- 源码泄露 查看源码即可 前台JS绕过 直接开发者工具查看源码 当然也可以抓包查看 也可以禁用js查看源码 协议头信息泄露 或者抓一下包也可 robot ...

  7. picoCTF,Reverse Engineering,逆向类,42/55

    picoCTF,Reverse Engineering,42/55 2019 picoCTF 01.vault-door-training,50分 02.vault-door-1,100分 03.va ...

  8. [ctf.show.reverse] 红包六

    下来是个压缩包,解开后一个原码,解码后是notflag,发现压缩包有5k大而解出的java文件只有1k,显然包里还有内容未解出 用010打开包发现有两个EzJar.class文件,手工切出解压 imp ...

  9. ctfshow 月饼杯(第二届) 部分WriteUp

    Misc 杂项签到 右键附件,从链接另存文件.然后用16进制编辑器或者你想用notepad也彳亍看文件尾,有一串base64,解码即可. ctfshow{we1come_to_mooncake_cap ...

  10. CTFSHOW新手杯MISC部分WriteUp

    引文 之前复现了CTFSHOW新人杯的WEB方向部分题目,今天就复现一下MISC为主的题目,可能有些读者不太明白MISC方向是什么意思,简单来说就是"杂项",包括:隐写,压缩包处理 ...

最新文章

  1. 【爱上Java8】BigInteger在Java8中的改进
  2. rewirte 规则
  3. python123 app下载_Python 逆向抓取 APP 数据
  4. (效果一)js实现上拉加载
  5. 时间转化_Excel常见时间日期函数全讲解,10个函数教你如何进行日期转化
  6. 在阿里云服务器Windows Server 2012r IIS 上部署.NET网站
  7. LVM的逻辑卷管理及CentOS挂载
  8. apache 反向代理_反向代理?听起来有点东西 ——Nginx学习笔记
  9. 当你不被上司信任和待见,工作无法正常开展
  10. 数据库SQL Server2012笔记(八)——Statement与PreparedStatement的区别,JDBC方式操作数据库...
  11. axure rp10安装教程,axurerp10安装步骤
  12. David Time Capsule Kick Off
  13. 上海计算机一级和四六级,大学英语六级比四级难多少?985学长含泪告诉你!
  14. 小米mini路由小米3 PandoraBox下载地址
  15. 使用CSS绘制一个平行四边形
  16. 2022美赛C题题目及思路--交易策略
  17. win10家庭版用户实现远程桌面解决办法
  18. mysql将数据库表内容(表内字段/属性)导出为excel表格
  19. 5000字长文:电商运营如何做好数据分析?
  20. 线程生命周期 什么时候会出现僵死进程

热门文章

  1. [LeetCode-JAVA] Remove Linked List Elements
  2. sql 替换text字段中的指定字符
  3. IIS内部服务错误aspx与asp
  4. 131. Palindrome Partitioning
  5. [Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]
  6. [Leedcode][JAVA][第300题][最长上上子序列][动态规划][压缩空间]
  7. python爬取百度贴吧中的所有邮箱_python写的百度贴吧邮箱采集(带界面)
  8. 获取内存_如何获取一个进程所占用的内存
  9. dts数据库迁移工具_传统数据库迁移上云利器-ADAM
  10. 405 not allowed什么意思_二驴质问散打:为什么不救天道!面临一个亿赔款?次惑小仙女宣布与可乐分手!...