1.下载附件,exeinfo查壳,无壳

2.32位IDA分析,进入主函数内

int __cdecl main(int argc, const char **argv, const char **envp)
{int result; // eaxint v4; // [esp+5Ch] [ebp-70h]char *v5; // [esp+60h] [ebp-6Ch]char v6[27]; // [esp+6Ch] [ebp-60h] BYREFchar v7; // [esp+87h] [ebp-45h]char *v8; // [esp+88h] [ebp-44h]char *v9; // [esp+8Ch] [ebp-40h]char *v10; // [esp+90h] [ebp-3Ch]char v11[12]; // [esp+98h] [ebp-34h] BYREFchar v12[24]; // [esp+A4h] [ebp-28h] BYREFint v13; // [esp+C8h] [ebp-4h]sub_402930();v13 = 0;sub_401530((int)&unk_4DDAF8, "please input flag");sub_4039B0(sub_402310);sub_401500(&dword_4DDA80, v12);if ( sub_405DE0(v12) == 24 ){sub_402A20(v11);LOBYTE(v13) = 1;sub_402570(v11);v10 = v12;v9 = (char *)sub_405270(v12);v8 = (char *)sub_4052B0(v12);while ( v9 != v8 ){v7 = *v9;sub_403B70(v7);++v9;}qmemcpy(v6, "rxusoCqxw{yqK`{KZqag{r`i", 24);sub_402590(v6);v5 = (char *)sub_405290(v11);v4 = sub_4052E0(v11);while ( v5 != (char *)v4 ){if ( !(unsigned __int8)sub_403BB0(*v5) ){sub_401530((int)&unk_4DDAF8, "error");sub_4039B0(sub_402310);LOBYTE(v13) = 0;sub_4034E0(v11);v13 = -1;sub_403450(v12);return 0;}++v5;}sub_401530((int)&unk_4DDAF8, "good job");sub_4039B0(sub_402310);LOBYTE(v13) = 0;sub_4034E0(v11);v13 = -1;sub_403450(v12);result = 0;}else{sub_401530((int)&unk_4DDAF8, "not enought");sub_4039B0(sub_402310);v13 = -1;sub_403450(v12);result = 0;}return result;
}
int __thiscall sub_403B70(void *this, char a2)
{char v3[65]; // [esp+Fh] [ebp-45h] BYREFvoid *v4; // [esp+50h] [ebp-4h]v4 = this;v3[0] = a2 ^ 0x14;//进行异或sub_406170(v3);return ++dword_4DD8F8;
}

3.最终脚本:

s ='rxusoCqxw{yqK`{KZqag{r`i'
for i in range(len(s)):print (chr(ord(s[i])^0x14),end = '')
#include<stdio.h>
#include<stdlib.h>
#include<string.h> int main()
{char a[]="rxusoCqxw{yqK`{KZqag{r`i";int i;for(i=0;i<24;i++){a[i]=a[i]^20;//20来源:在IDA中快捷键H将0x14转化为十进制20printf("%c",a[i]);}return 0;
}

flag{Welcome_to_Neusoft}

攻防世界 happyctf相关推荐

  1. 【攻防世界001】Guess-the-Number

    攻防世界之前刷了几十题了,没写wp,感觉很简单没啥意思.后来参加了几次比赛,发现有点干不动,决定还是老老实实刷题好了.这是第一篇wp,这题很简单,是个jar,用jd-gui可以得到java源码. 原来 ...

  2. 攻防世界(pwn)--Mary_Morton 利用格式化字符串+栈溢出破解Canary的保护机制

    ctf(pwn) canary保护机制讲解 与 破解方法介绍 程序执行流程 有三个选项,1是利用栈溢出,2是利用格式化字符串,3是退出;可连续输入多次; IDA分析 解题思路 程序存在canary保护 ...

  3. 攻防世界(Pwn) forgot---栈溢出;(方法二)

    攻防世界(Pwn) forgot-栈溢出:(方法一) 里面对问题描述的更详细一点 返回目标函数 0x80486CC 方法二(爆破流) 因为最终返回的是 v3[0]-v3[9] 之中的一个函数, v3[ ...

  4. 攻防世界(Pwn) forgot---栈溢出;(方法一)

    攻防世界(Pwn) forgot-栈溢出:(方法二) 介绍 这道题表面看起来有点复杂,其实很简单,有两种方法可以来做这一道题; 方法一(精确打击) 文件运行流程是: 1.先输入名字 2. 输入一串字符 ...

  5. 攻防世界misc新手_[攻防世界]mobile新手练习区easy-apk

    [攻防世界]mobile新手练习区easy-apk easy-apk最佳Writeup由129师386旅独立团 • devi1提供 难度系数: 7.0 题目来源: 暂无 题目描述:无 题目场景: 暂无 ...

  6. 攻防世界 ——crypto

    目录 新手区部分题解: 1,easy_RSA 2,Normal_RSA 3, 幂数加密 4,easy_ECC 高手进阶区部分题题解 5, ENC 6,告诉你个秘密 7,Easy-one 8,说我作弊需 ...

  7. 攻防世界———MISC 高手区题解

    目录 1,base64stego 2,easycap 3,Avatar 4,What-is-this 5,签到题 6,Training-Stegano-1 7,Excaliflag 8,Get-the ...

  8. 攻防世界 web(二)

    这周接着刷攻防世界的web题( ̄︶ ̄)↗ 1.command_execution 看提示这题为命令执行漏洞(command_execution),关于命令执行漏洞,我前面有篇博客详细介绍了,大家不了解 ...

  9. misc高阶 攻防世界_攻防世界 Misc 进阶题(一)

    攻防世界 Misc 进阶题(一) 关于隐写术的思路或方法 转载: https://blog.csdn.net/a_small_rabbit/article/details/79644078     隐 ...

最新文章

  1. Struts 2中#、%和$符号的相应用途
  2. 清理XCode无用的文件(转)
  3. 2.7 HBase架构深入剖析
  4. IIC总线上挂载多个从机的程序实现
  5. 【spfa】假期计划(jzoj 3936)
  6. 【SDOI 2014】数表
  7. 汇付天下支付使用 NPC_SERVER
  8. 你真的会调试 Linux 内核故障吗,看完这一篇后你会茅塞顿开的!
  9. 全国首个NB-IoT规模化商用 - BC95模块
  10. 蓝宝石rx470d原版bios_狼神矿卡烤机89°C!强刷蓝宝石RX570超白金显卡BIOS降温75°教程...
  11. 破解瑞幸,“原形”毕露
  12. 原生JS实现视频播放功能
  13. theano学习--theano.function
  14. video标签(获取视频时间总长度,视频当前时间,播放暂停方法,视频封面,)
  15. Java正则获取小括号中的内容_java正则表达式获取大括号小括号内容并判断数字和小数亲测可用...
  16. 二进制表示负数的方法:“ 补数 ”
  17. swap分区、硬盘和磁盘
  18. 已被清理的文件怎么恢复?电脑找回删除的文件?恢复文件夹误删文件
  19. 宽依赖和窄依赖深度剖析
  20. 鞋类产品推广引流落地页html源码

热门文章

  1. cygwin生成so
  2. Java中计算处理中文两个字符长度问题解决(中文2个字符,英文1个字符)
  3. 《互联网信贷风险与大数据》读书笔记(一)
  4. Java中Map.Entry详解
  5. VK第三方登录(JavaScript SDK)
  6. MLK | 非监督学习最强攻略
  7. Linux Zram配置使用(特定平台个人使用,maybe不具普适性)
  8. linux 限速工具 netem bridge
  9. Linux C语言IO多路转接select函数
  10. 在硕士论文致谢里感谢自己的猫咪,真的可以吗?