测试文件: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. 【开车旅行】题解(NOIP2012提高组)

    分析 首先我们可以发现,两个询问都可以通过一个子程序来求. 接着,如果每到一个城市再找下一个城市,显然是行不通的.所以首先先预处理从每一个城市开始,小A和小B要去的城市.预处理的方法很多,我用的是双向 ...

  2. logstash+redis收集负载均衡模式下多台服务器的多个web日志

    一.logstash的简介 一般我们看日志来解决问题的时候要么 tail+grep 要么 把日志下载下来再搜索,可以应付不多的主机和应用不多的部署场景.但对于多机多应用部署就不合适了.这里的多机多应用 ...

  3. HDU 4758 Walk Through Squares ( Trie图 && 状压DP && 数量限制类型 )

    题意 : 给出一个 n 行.m 列的方格图,现从图左上角(0, 0) 到右下角的 (n, m)走出一个字符串(规定只能往下或者往右走),向右走代表' R ' 向下走则是代表 ' D ' 最后从左上角到 ...

  4. adaboost面试题

    1.简述权值更新方法 (1)初始化权值分布: (2)找到误差最小的弱分类器: (3)计算弱分类器的权值: (4)更新下一轮样本的权值分布: (5)集合多个弱分类器成一个最终的强分类器. 2.为什么能快 ...

  5. ORB an efficient alternative to SIFT or SURF

    AbstractFeature matching is at the base of many computer vision problems, such as object recognition ...

  6. PHP必备函数详解

    PHP必备函数详解

  7. xargs -i参数详解

    学习所需,文章转载过来! xargs与find经常结合来进行文件操作,平时删日志的时候只是习惯的去删除,比如 # find . -type f -name "*.log" | xa ...

  8. Vue实现音乐播放器(二)-Vue-cli脚手架安装

  9. python值的引用传递和go语言的值传递

    一:值传递 实参a 原本指向地址 1638212,代表1638212这个地址的值是3.在swap函数中,实参a将值拷贝给形参a,形参a此时也在内存中拥有地址,地址= xxxx,值为3,在所有的函数体内 ...

  10. Openstack_通用技术_RPC 远程异步调用

    目录 目录 RPC 一个通过 HTTP Request 调用操作函数的 RPC 实现样例 环境 接收 HTTP Request RPC 调用具体的操作函数 测试 RPC RPC: 同一个项目内的不同服 ...