攻防世界--re1-100
测试文件:https://adworld.xctf.org.cn/media/task/attachments/dc14f9a05f2846249336a84aecaf18a2.zip
1.准备
获取信息
- 64位文件
2.IDA打开
前面大部分都是“无用代码”,这里贴上我们需要的代码
- while ( )
- {
- memset(flag, , 0xC8uLL);
- numRead = read(pParentWrite[], flag, 0xC8uLL);
- if ( numRead == - )
- break;
- if ( numRead )
- {
- if ( childCheckDebugResult() )
- {
- responseFalse();
- }
- else if ( flag[] == '{' ) // flag[0]为'{'
- {
- if ( strlen(flag) == ) // len(flag)=42
- {
- if ( !strncmp(&flag[], "53fc275d81", 10uLL) )// flag[1]~flag[10]为"53fc275d81"
- {
- if ( flag[strlen(flag) - ] == '}' )// flag[41]='}'
- {
- if ( !strncmp(&flag[], "4938ae4efd", 10uLL) )// flag[31]~flag[40]为'4938ae4efd'
- {
- if ( !confuseKey(flag, ) ) // 改变原本flag中字符串的顺序
- {
- responseFalse();
- }
- else if ( !strncmp(flag, "{daf29f59034938ae4efd53fc275d81053ed5be8c}", 42uLL) )// '{}'中间有40个字符,10个为一组,则现在顺序为3,4,1,2
- {
- responseTrue();
- }
- else
- {
- responseFalse();
- }
- }
- else
- {
- responseFalse();
- }
- }
- else
- {
- responseFalse();
- }
- }
- else
- {
- responseFalse();
- }
- }
- else
- {
- responseFalse();
- }
- }
- else
- {
- responseFalse();
- }
- }
- }
- exit();
- }
- exit();
- }
- bool __cdecl confuseKey(char *szKey, int iKeyLength)
- {
- char szPart1[]; // [rsp+10h] [rbp-50h]
- char szPart2[]; // [rsp+20h] [rbp-40h]
- char szPart3[]; // [rsp+30h] [rbp-30h]
- char szPart4[]; // [rsp+40h] [rbp-20h]
- unsigned __int64 v7; // [rsp+58h] [rbp-8h]
- v7 = __readfsqword(0x28u);
- *(_QWORD *)szPart1 = 0LL;
- *(_DWORD *)&szPart1[] = ;
- *(_WORD *)&szPart1[] = ;
- szPart1[] = ;
- *(_QWORD *)szPart2 = 0LL;
- *(_DWORD *)&szPart2[] = ;
- *(_WORD *)&szPart2[] = ;
- szPart2[] = ;
- *(_QWORD *)szPart3 = 0LL;
- *(_DWORD *)&szPart3[] = ;
- *(_WORD *)&szPart3[] = ;
- szPart3[] = ;
- *(_QWORD *)szPart4 = 0LL;
- *(_DWORD *)&szPart4[] = ;
- *(_WORD *)&szPart4[] = ;
- szPart4[] = ;
- if ( iKeyLength != )
- return ;
- if ( !szKey )
- return ;
- if ( strlen(szKey) != )
- return ;
- if ( *szKey != )
- return ;
- strncpy(szPart1, szKey + , 0xAuLL);
- strncpy(szPart2, szKey + , 0xAuLL);
- strncpy(szPart3, szKey + , 0xAuLL);
- strncpy(szPart4, szKey + , 0xAuLL);
- memset(szKey, , iKeyLength);
- *szKey = ;
- strcat(szKey, szPart3);
- strcat(szKey, szPart4);
- strcat(szKey, szPart1);
- strcat(szKey, szPart2);
- szKey[] = ;
- return ;
- }
3.代码分析
第一段代码我们能够获取到flag[0],flag[1]~flag[10],flag[31]~flag[40],flag[41],以及调换顺序之后的flag
第二段代码实际上是在对原来的flag字符串的位置进行调换,"{}"中间有40个字符,10个为一组,现在的顺序就是3,4,2,1。
因此,我们通过调换顺序之后的flag,能够获取到原来的flag。这道题最坑的就是真正的flag没有"{}"
4.get flag!
53fc275d81053ed5be8cdaf29f59034938ae4efd
攻防世界--re1-100的更多相关文章
- 攻防世界RE1 writeup
解题过程 将题目给出的exe文件拖入ida中,查看main函数. 分析函数的逻辑,发现用户需要输出一个字符串,存储到变量v9中.如果v9的值与v5的值相等则会打印unk_413e90中的值,否则打印a ...
- 攻防世界--re1
练习文件下载:https://www.lanzous.com/i5lufub 1.使用IDA打开,进入main函数. 2.转为C代码 可以看到,输入v9之后,与v5比较,判断我们输入的flag是否正确 ...
- 【攻防世界】 高手进阶区 Recho WP
0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...
- 记录下做攻防世界的misc题
0x00 记录一下,代表自己做过 0x01 flag_universe 看简介是来自2018年的百越杯. 将文件下载下来后,就一个flag_universe.pcapng文件,wireshark打开. ...
- pwn篇:攻防世界进阶welpwn,LibcSearcher使用
攻防世界welpwn (搬运一篇自己在CSDN写的帖子) 链接:https://blog.csdn.net/weixin_44644249/article/details/113781356 这题主要 ...
- 攻防世界Web刷题记录(进阶区)
攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...
- 攻防世界 WriteUp
附:|>>>攻防世界-WEB-新手练习区<<<| WriteUp目录 01.|>>>baby_web<<<| 02.|>& ...
- 攻防世界(六)supersqli
攻防世界系列:supersqli 方法一: 用逗号包裹回显正常,说明存在注入 1';--+(注释符也可用 -- 或 # 发现均未被过滤!) 有order by 语句可知表由2个字段,使用联合查询 (想 ...
- 攻防世界-MISC:pdf
这是攻防世界新手练习区的第二题,题目如下: 点击附件1下载,打开后发现是一个pdf文件,里面只有一张图片 用WPS打开,没发现有什么不对的地方,参考一下WP,说是要转为word格式.随便找一个在线转换 ...
- 攻防世界web进阶题—unfinish
攻防世界web进阶题-unfinish 1.看一下题目提示SQL 2.打开题目看一下源码,没有问题 3.查一下网站的组成:php+Apache/2.4.7+Ubuntu 4.扫一下目录,扫到一个注册页 ...
随机推荐
- springboot创建拦截器
一.创建一个MyIntercepor实现HandlerInterceptor接口的类 二.创建一个WebMvcConfig实现WebMvcConfigurer的类 ...
- 2017年cocoaPods 1.2.1升级
还在用老版本的ccoaPods,安装三方库时,会报错 : [!] Invalid `Podfile` file: [!] The specification of `link_with` in the ...
- 01 Netty是什么?
01 Netty是什么? IO编程 我们简化下场景:客户端每隔两秒发送一个带有时间戳的 "hello world" 给服务端,服务端收到之后打印. 为了方便演示,下面例子中,服务端 ...
- PHP导出excel文件名中文IE乱码解决
<?php $ua = strtolower($_SERVER['HTTP_USER_AGENT']); if(preg_match('/msie/', $ua) || preg_match(' ...
- E. Natasha, Sasha and the Prefix Sums
http://codeforces.com/contest/1204/problem/E 给定n个 1 m个 -1的全排 求所有排列的$f(a) = max(0,max_{1≤i≤l} \sum_{j ...
- CG-CTF | 综合题2
查源码发现一个文件读取:http://cms.nuptzj.cn/about.php?file=sm.txt,用它把能找到的php都读取下来 <?php if (!isset($_COOKIE[ ...
- 国内npm镜像使用方法
npm全称Node Package Manager,是node.js的模块依赖管理工具.由于npm的源在国外,所以国内用户使用起来各种不方便.下面整理出了一部分国内优秀的npm镜像资源,国内用户可以选 ...
- Linux shell -查找字符(find,xargs,grep)
在当前目录下查找含有jmxremote字符的文件 test@>find . -type f|xargs grep "jmxremote" . 当前目录 -type 查找文件类 ...
- 阿里云配置通用服务的坑 ssh: connect to host 47.103.101.102 port 22: Connection refused
1.~ wjw$ ssh root@47.103.101.102 ssh: connect to host 47.103.101.102 port 22: Connection refused ssh ...
- 测开之路一百一十:bootstrap图片
bootstrap图片 引入bootstrap 原版的图片 bootstrap处理后的: 圆角.圆形.缩略图 自适应窗口