菜狗的reverse学习——攻防世界xxxorrr
xxxorrr
无壳直接看源码
__int64 __fastcall main(int a1, char **a2, char **a3)
{int i; // [rsp+Ch] [rbp-34h]char s[40]; // [rsp+10h] [rbp-30h] BYREFunsigned __int64 v6; // [rsp+38h] [rbp-8h]v6 = __readfsqword(0x28u);sub_A90(sub_916);fgets(s, 35, stdin);for ( i = 0; i <= 33; ++i )s1[i] ^= s[i];return 0LL
看到主函数,输入的s1与s1的元素进行异或,点击sub_916函数找s1
unsigned __int64 sub_916()
{unsigned __int64 v1; // [rsp+8h] [rbp-8h]v1 = __readfsqword(0x28u);if ( !strcmp(s1, s2) )puts("Congratulations!");elseputs("Wrong!");return __readfsqword(0x28u) ^ v1;
}
#.data:0000000000201060 s2 db 'VNWXQQ',9,'F' ; DATA XREF: sub_916+17↑o
.data:0000000000201068 db 17h
.data:0000000000201069 db 46h ; F
.data:000000000020106A db 54h ; T
.data:000000000020106B db 5Ah ; Z
.data:000000000020106C db 59h ; Y
.data:000000000020106D db 59h ; Y
.data:000000000020106E db 1Fh
.data:000000000020106F db 48h ; H
.data:0000000000201070 db 32h ; 2
.data:0000000000201071 db 5Bh ; [
.data:0000000000201072 db 6Bh ; k
.data:0000000000201073 db 7Ch ; |
.data:0000000000201074 db 75h ; u
.data:0000000000201075 db 6Eh ; n
.data:0000000000201076 db 7Eh ; ~
.data:0000000000201077 db 6Eh ; n
.data:0000000000201078 db 2Fh ; /
.data:0000000000201079 db 77h ; w
.data:000000000020107A db 4Fh ; O
.data:000000000020107B db 7Ah ; z
.data:000000000020107C db 71h ; q
.data:000000000020107D db 43h ; C
.data:000000000020107E db 2Bh ; +
.data:000000000020107F db 26h ; &
.data:0000000000201080 db 89h
这里将s1和s2对比,相同就正确,所以s1应该就是flag加密后的字符串
unsigned __int64 sub_84A()
{int i; // [rsp+Ch] [rbp-14h]unsigned __int64 v2; // [rsp+18h] [rbp-8h]v2 = __readfsqword(0x28u);for ( i = 0; i <= 33; ++i )s1[i] ^= 2 * i + 65;return __readfsqword(0x28u) ^ v2;
}
这是加密s1的函数,看到进行了一次异或
函数整体分析,函数先将输入的s与s1进行异或得到新s1,新s1经过sub_84A()函数加密后得到的s1与s2相同
解题思路:将s2与s1异或得到s1异或前的元素,通过加密函数逆向推出正确的flag
exp
s2=[ 0x56, 0x4E, 0x57, 0x58, 0x51, 0x51, 0x09, 0x46, 0x17, 0x46, 0x54, 0x5A, 0x59, 0x59, 0x1F, 0x48, 0x32, 0x5B, 0x6B, 0x7C, 0x75, 0x6E, 0x7E, 0x6E, 0x2F, 0x77, 0x4F, 0x7A, 0x71, 0x43, 0x2B, 0x26, 0x89, 0xFE, 0x00]
s1 = 'qasxcytgsasxcvrefghnrfghnjedfgbhn'
flag=''
for i in range(33):flag+=chr(ord(s1[i])^ (2 * i + 65)^s2[i])
print(flag)
# flag{c0n5truct0r5_functi0n_in_41f}
菜狗的reverse学习——攻防世界xxxorrr相关推荐
- 攻防世界-MISC-练习区-12(功夫再高也怕菜刀)
题目描述:菜狗决定用菜刀和菜鸡决一死战 这是攻防世界里面训练区的一道流量分析题,用wireshark 打开流量包 然后一级搜索http,二级用分组字节流搜索flag(按CTRL+F),并找到no.13 ...
- 攻防世界[刷题笔记]之Web方向(练习区)(后半)
网络安全学习 攻防世界[刷题笔记] Web方向(新手区)(后半) xff_referer webshell command_execution simple_js 小结 攻防世界[刷题笔记] Web方 ...
- 攻防世界reverse进阶easyre-153 writeup(#gdb调试父子进程、#ida版本差异)
文章目录 学习目标: 引言 第一步.查脱壳 1.查壳 2.脱壳 3.查看文件格式 第二步.IDA静态分析 1.IDA版本的小坑 2.分析main函数 3.分析lol函数 第三步.gdb动态分析 1.m ...
- file upload 攻防世界_菜鸡 CTF 之旅 Writeup (攻防世界)
前言 我是个菜鸡,菜鸡就要先走新手练习区. 这次 CTF Writeup 的指定训练站点为 攻防世界 新手练习区 Web 区 view_source 题目描述:X老师让小宁同学查看一个网页的源代码,但 ...
- 攻防世界 Reverse高手进阶区 2分题 reverse-for-the-holy-grail-350
前言 继续ctf的旅程 攻防世界Reverse高手进阶区的2分题 本篇是reverse-for-the-holy-grail-350的writeup 发现攻防世界的题目分数是动态的 就仅以做题时的分数 ...
- 攻防世界Reverse进阶区-EasyRE-writeup
1. 介绍 本题是xctf攻防世界中Reverse的进阶区的题EasyRE. 下载下来以后是一个exe文件:210f1e18ac8d4a15904721a2383874f5.exe 2. 分析 首先看 ...
- 攻防世界Reverse进阶区-answer_to_everything-writeup
本题是xctf攻防世界中Reverse的进阶区的题answer_to_everything 题目来源: 2019_ISCC 题目描述:sha1 得到了一个神秘的二进制文件.寻找文件中的flag,解锁宇 ...
- Revers篇:攻防世界reverse进阶re2-cpp-is-awesome
攻防世界reverse进阶re2-cpp-is-awesome IDA分析 很简单的一个程序 程序流程分析 首先检查参数,参数少于2就退出,并提示:Usage: ./re2-cpp-is-awesom ...
- 攻防世界 Reverse高手进阶区 3分题 crackme
前言 继续ctf的旅程 攻防世界Reverse高手进阶区的3分题 本篇是crackme的writeup 攻防世界的题目分数是动态的 就仅以做题时的分数为准了 解题过程 查壳,显示nsPack壳 找了个 ...
最新文章
- AngularJs--过滤器(filter)
- 自动驾驶第一案结果敲定,谷歌无人驾驶和Uber达成2.5亿美元和解协议
- Lucene的评分(score)机制的简单解释
- Stanford UFLDL教程 微调多层自编码算法
- 另一个分区工具:GNU 的 parted(转)
- 日志级别_SpringBoot实战(十三):Admin动态修改日志级别
- Vue-Treeselect 的下拉菜单不出Table的框
- mysql 树形结构_Mysql安装:基础入门知识
- 温故js系列(11)-BOM
- 关于Mac电脑更新IP地址的解决方法!
- xcode 重新来过openssl项目历程
- protues仿真器51单片机定时器内部定时方式
- ntfs linux,NTFS-3G (简体中文)
- 概率论复习总结——基本概念
- 使用IEEE802.1Q VLAN实现单线复用之牛刀小试篇
- VS Code 报Windows找不到文件‘chrome‘. 请确定文件名是否正确后,再试一次。八种解决办法
- 深度学习系列2:框架tensorflow
- web 页面的提交方式
- 2007年最杰出十大新锐站长评选-------关注!
- VC Formal FPV 启动脚本简单模板
热门文章
- comsol结构力学-应力应变仿真
- Python对Excel文件多表对多表之间的匹配(两种不同表头)——之json版
- 想设计一个母亲节小程序c语言,用小程序做一张精美海报,对母亲说一句:祝您母亲节快乐!...
- SpringCloud Getway服务网关
- 1838.最高频元素的频数
- C语言--getchar()函数超详细解析(多维度分析,小白一看就懂!!!)
- 全面认识MOS管,一篇文章就够了
- 尝试Ping百度域名后的思考
- android p 华为p10,华为p10p使用十天感受
- 菜鸡学Unity 之 了解 Unity 中的五个视图窗口