当前位置: 首页 > news >正文

25.8.29_NSSCTF——[BJDCTF 2020]Easy_WP

NSSCTF——[BJDCTF 2020]Easy_WP

一、做题过程

这道题考的是动调,我之前没怎么做过动调的题,所以借鉴了很多大佬的文章

首先是看了ida调试技巧-通过修改eip寄存器的值强制运行程序中存在但未被调用的函数_ida运行程序-CSDN博客,了解了如何在ida运行时通过修改EIP(可以理解为指针)来运行原来不能运行的函数

看题,32位,无壳:

image-20250829224724570

打开后直奔main函数,发现啥也没有:

image-20250829224811304

在左侧的函数窗口可以看到一个_ques函数:

int ques()
{int v0; // edxint result; // eax_DWORD buf[50]; // [esp+20h] [ebp-128h] BYREFint n2147122737; // [esp+E8h] [ebp-60h]_DWORD v4[10]; // [esp+ECh] [ebp-5Ch]int j; // [esp+114h] [ebp-34h]__int64 v6; // [esp+118h] [ebp-30h]int v7; // [esp+124h] [ebp-24h]int v8; // [esp+128h] [ebp-20h]int i; // [esp+12Ch] [ebp-1Ch]n2147122737 = 2147122737;v4[0] = 140540;v4[1] = -2008399303;v4[2] = 141956;v4[3] = 139457077;v4[4] = 262023;v4[5] = -2008923597;v4[6] = 143749;v4[7] = 2118271985;v4[8] = 143868;for ( i = 0; i <= 4; ++i ){memset(buf, 0, sizeof(buf));v8 = 0;v7 = 0;v0 = v4[2 * i];LODWORD(v6) = v4[2 * i - 1];HIDWORD(v6) = v0;while ( v6 > 0 ){buf[v8++] = v6 % 2;v6 /= 2LL;}for ( j = 50; j >= 0; --j ){if ( buf[j] ){if ( buf[j] == 1 ){putchar(42);++v7;}}else{putchar(32);++v7;}if ( !(v7 % 5) )putchar(32);}result = putchar(10);}return result;
}

这里putchar了很多字符,flag多半就在这里

现在开始动调改EIP,首先找到main函数的结尾,也就是return那里的地址,下断点:

image-20250829225004497

然后左上角Debugger->switch debugger->local windows debbugger,然后F9开始动调

注意这个cmd界面需要回车一下

image-20250829225133303

然后右上角找到EIP并双击,修改为_ques函数的开始地址0x00401520

image-20250829225221582

image-20250829225243038

这样我们就进入了ques函数,这里继续运行程序就可以在cmd界面找到打印出来的字符了

这里最开始我是一直F7,发现需要按好久,于是我搜了一下,看了这篇文章IDA 快捷键基本使用(常用+动调快捷键)_ida快捷键-CSDN博客,这里直接ctrl+F7自动运行就可以了,得到flag:

image-20250829225602398

Get_flag:NSSCTF{HACKIT4FUN}

二、需要注意的

动运行就可以了,得到flag:

[外链图片转存中…(img-NGXfjr29-1756479480948)]

Get_flag:NSSCTF{HACKIT4FUN}

二、需要注意的

  • ida中通过动调修改EIP运行没有运行的函数
http://www.dtcms.com/a/357604.html

相关文章:

  • VeOmni 全模态训练框架技术详解
  • 深入理解Go 与 PHP 在参数传递上的核心区别
  • 变量声明方式
  • 嵌入式第四十一天(数据库)
  • 海量小文件问题综述和解决攻略(二)
  • C++ DDS框架学习
  • 超详细讲解urllib库的使用
  • 【C语言初阶】指针_野指针,指针运算
  • UCIE Specification详解(九)
  • 马斯克杀入AI编程!xAI新模型Grok Code Fast 1发布,深度评测:速度、价格与API上手指南
  • 数列寻方:等差数列和为完全平方数
  • Node.js汉字转拼音指南:pinyin-pro全解析
  • Llama-index学习文档
  • 使用leapp升级Linux
  • (一)Python语法基础(上)
  • MYSQL-索引(上)
  • 营业执照识别技术应用OCR与深度学习,实现高效、精准提取企业核心信息,推动数字化管理发展。
  • Android init 进程部分理论
  • 为什么外贸企业管理需要外贸CRM系统
  • Electron 进程模型:主进程与渲染进程详解
  • LDA(隐狄利克雷分配):主题模型的经典之作
  • ubuntu如何识别windows的USB设备(WSL2)
  • Shell 编程基础(续):流程控制与实践
  • RustDesk(跨平台远程桌面软件) v1.4.1 中文绿色版
  • 单节锂电池,升压至12V/2.5A的芯片选型指南(附FP5207X 与 FP7208参数表)
  • 【大模型14】Fine-tuning与大模型优化1
  • 基于深度学习的文本情感分析系统:从理论到实践的全栈实现
  • UPDF for mac PDF编辑器
  • 表达式语言EL
  • 【0422】SMgrRelationData 中 md_num_open_segs 和 md_seg_fds 数组为什么是 4 个元素? 第四个元素表示什么?