测试文件:https://adworld.xctf.org.cn/media/task/attachments/2543a3658d254c30a89e4ea7b8950c27.zip

这道题很坑了,exe文件研究了半天。

1.准备

获得信息

  • 32位文件

2.IDA打开

用IDA看了三个文件,都差不多。

 int __cdecl main(int argc, const char **argv, const char **envp)
{
void *v3; // esp
void *v4; // esp
char *v6; // [esp+4h] [ebp-44h]
char v7; // [esp+8h] [ebp-40h]
char v8; // [esp+1Bh] [ebp-2Dh]
char *v9; // [esp+1Ch] [ebp-2Ch]
int v10; // [esp+20h] [ebp-28h]
char v11; // [esp+25h] [ebp-23h]
char v12; // [esp+26h] [ebp-22h]
char v13; // [esp+27h] [ebp-21h]
char v14; // [esp+28h] [ebp-20h]
char v15; // [esp+29h] [ebp-1Fh]
char v16; // [esp+2Ah] [ebp-1Eh]
char v17; // [esp+2Bh] [ebp-1Dh]
char v18; // [esp+2Ch] [ebp-1Ch]
char v19; // [esp+2Dh] [ebp-1Bh]
char v20; // [esp+2Eh] [ebp-1Ah]
char v21; // [esp+2Fh] [ebp-19h]
char v22; // [esp+30h] [ebp-18h]
char v23; // [esp+31h] [ebp-17h]
char v24; // [esp+32h] [ebp-16h]
char v25; // [esp+33h] [ebp-15h]
char v26; // [esp+34h] [ebp-14h]
char v27; // [esp+35h] [ebp-13h]
char v28; // [esp+36h] [ebp-12h]
char v29; // [esp+37h] [ebp-11h]
char v30; // [esp+38h] [ebp-10h]
char v31; // [esp+39h] [ebp-Fh]
char v32; // [esp+3Ah] [ebp-Eh]
char v33; // [esp+3Bh] [ebp-Dh]
char v34; // [esp+3Ch] [ebp-Ch]
char v35; // [esp+3Dh] [ebp-Bh]
char v36; // [esp+3Eh] [ebp-Ah]
char v37; // [esp+3Fh] [ebp-9h]
int *v38; // [esp+40h] [ebp-8h] v38 = &argc;
__main();
v8 = 'T';
v37 = -;
v36 = ;
v35 = -;
v34 = ;
v33 = -;
v32 = ;
v31 = -;
v30 = -;
v29 = ;
v28 = ;
v27 = ;
v26 = ;
v25 = -;
v24 = -;
v23 = ;
v22 = -;
v21 = -;
v20 = -;
v19 = -;
v18 = -;
v17 = ;
v16 = ;
v15 = -;
v14 = -;
v13 = -;
v12 = -;
v11 = ;
v10 = ;
v3 = alloca();
v4 = alloca();
v9 = &v7;
printf("Key: ");
v6 = v9;
scanf("%s", v9);
if ( check_key((int)v9) )
interesting_function((int)&v8);
else
puts("Wrong");
return ;
}

3.代码分析

很明显只要绕过第76行代码,我们就能够获取我们需要的flag,而且v8还是已知的,

3.1 GDB调试

将Linux下的那个文件放入Linux调试。

task9_x86_64_46d01fe312d35ecf69c4ff8ab8ace75d080891dc

命令:

gdb

file task9_x86_64_46d01fe312d35ecf69c4ff8ab8ace75d080891dc

b main

r

然后一直执行命令next,运行到check_key函数处

3.2 跳过check_key

把test eax,eax改为真就行,也就是把eax改为1。

修改eax

set $eax=1

一直执行

4.get flag!

flag_is_you_know_cracking!!!

攻防世界--simple-check-100的更多相关文章

  1. 攻防世界 simple——js

    simple_js [原理] javascript的代码审计 [目地] 掌握简单的javascript函数 [环境] windows [工具] firefox [步骤] 1.打开页面,查看源代码,可以 ...

  2. XCTF攻防世界Web之WriteUp

    XCTF攻防世界Web之WriteUp 0x00 准备 [内容] 在xctf官网注册账号,即可食用. [目录] 目录 0x01 view-source2 0x02 get post3 0x03 rob ...

  3. 【攻防世界】 高手进阶区 Recho WP

    0x00 考察点 考察点有三个: ROP链构造 Got表劫持 pwntools的shutdown功能 0x01 程序分析 上来三板斧 file一下 checksec --file XXX chmod ...

  4. 攻防世界Web新手解析

    攻防世界入门的题目 view source 禁用右键,F12审查元素 get post hackbar进行post robots 直接访问robots.txt,发现f1ag_1s_h3re.ph文件, ...

  5. 记录下做攻防世界的misc题

    0x00 记录一下,代表自己做过 0x01 flag_universe 看简介是来自2018年的百越杯. 将文件下载下来后,就一个flag_universe.pcapng文件,wireshark打开. ...

  6. 异或加密 - cr2-many-time-secrets(攻防世界) - 异性相吸(buuctf)

    Crib dragging attack 在开始了解 Crib dragging attack 之前,先来理一理 异或. 异或加密 [详情请戳这里] XOR 加密简介 异或加密特性: ① 两个值相同时 ...

  7. RSA(攻防世界)Rsa256 -- cr4-poor-rsa

    RSA256 [攻防世界] 题目链接 [RSA256] 下载附件得到两个文件. 猜测第一个 txt 文件 可能为RSA加密密文 ,第二个估计就是密钥.依次打开看看: 果然如此. 目标: 寻找 n.e. ...

  8. RSA脚本环境配置-攻防世界-OldDriver

    [Crypto] 题目链接 [RSA算法解密] 审题分析 首先拿到一个压缩包,解压得到文件enc.txt. 先不用去管其他,第一眼enc马上联想到 RSA解密.接着往下看 [{"c" ...

  9. pwn篇:攻防世界进阶welpwn,LibcSearcher使用

    攻防世界welpwn (搬运一篇自己在CSDN写的帖子) 链接:https://blog.csdn.net/weixin_44644249/article/details/113781356 这题主要 ...

  10. 攻防世界Web刷题记录(进阶区)

    攻防世界Web刷题记录(进阶区) 1.baby_web 发现去掉URLhttp://111.200.241.244:51461/1.php后面的1.php,还是会跳转到http://111.200.2 ...

随机推荐

  1. UVALive 3263: That Nice Euler Circuit (计算几何)

    题目链接 lrj训练指南 P260 //==================================================================== // 此题只需要考虑线 ...

  2. 手把手教你做echarts图表系列之组织结构图

    在实际项目中使用echarts越来越多了,今天从一个组织结构图开始,手把手教大家开发echarts图表. 公司里的组织结构图如下: 可以参考echarts入门教程:http://echarts.bai ...

  3. angular 发送ajax

    在使用angular发送ajax的时候get和post一样的,就是method改一下. ajax的js: <script> var app = angular.module('emialV ...

  4. 逻辑回归模型(Logistic Regression, LR)--分类

    逻辑回归(Logistic Regression, LR)模型其实仅在线性回归的基础上,套用了一个逻辑函数,但也就由于这个逻辑函数,使得逻辑回归模型成为了机器学习领域一颗耀眼的明星,更是计算广告学的核 ...

  5. 在一个shell中查看管理 任务(前台和后台)/工作jobs 的命令

    在一个shell中查看管理 任务(前台和后台)/工作jobs 的命令 jobs是在同一个shell环境而言, 才有意义的. 为什么有jobs这个命令? 是因为, 如果从cmd line运行gui程序时 ...

  6. leetcode 111二叉树的最小深度

    使用深度优先搜索:时间复杂度O(n),空间复杂度O(logn) /** * Definition for a binary tree node. * struct TreeNode { * int v ...

  7. SQL数据库字段添加说明文字

    1.查看指定表中的所有带说明文字的字段内容 SELECT *,OBJECT_NAME(major_id) AS obj_name FROM sys.extended_properties WHERE ...

  8. Vue实现音乐播放器(七):轮播图组件(二)

    轮播图组件 <template> <div class="slider" ref="slider"> <div class=&qu ...

  9. curl发json

    linux 模拟post请求 curl -X POST \ -H "Content-Type: application/json" \ -H "token:GXJP1cl ...

  10. Delphi控件-复合控件

     http://blog.csdn.net/cml2030/article/details/3166634 Delphi控件-复合控件 标签: delphidestructorbuttonstring ...