首页 > 其他分享 >dbg修改EIP动调 [BJDCTF 2020]Easy

dbg修改EIP动调 [BJDCTF 2020]Easy

时间:2024-06-02 21:54:55浏览次数:12  
标签:EIP ebp 函数 esp int 打印 dbg v4 2020

教程多是patching,但是我下载错误(以后有时间再试试),那用dbg吧

还有这道题蜜汁让我幻视pwn

题目

Die

IDA

主函数很好找,代码只是输出提示,没有其他东西了

关键函数在其他地方

 看看左边函数框

 发现在main函数前面有一个名字一看就是自定义的函数ques

这个函数在main函数之前运行

 1 int ques()
 2 {
 3   int v0; // edx
 4   int result; // eax
 5   int v2[50]; // [esp+20h] [ebp-128h] BYREF
 6   int v3; // [esp+E8h] [ebp-60h]
 7   int v4[10]; // [esp+ECh] [ebp-5Ch]
 8   int j; // [esp+114h] [ebp-34h]
 9   __int64 v6; // [esp+118h] [ebp-30h]
10   int v7; // [esp+124h] [ebp-24h]
11   int v8; // [esp+128h] [ebp-20h]
12   int i; // [esp+12Ch] [ebp-1Ch]
13 
14   v3 = 2147122737;
15   v4[0] = 140540;
16   v4[1] = -2008399303;
17   v4[2] = 141956;
18   v4[3] = 139457077;
19   v4[4] = 262023;
20   v4[5] = -2008923597;
21   v4[6] = 143749;
22   v4[7] = 2118271985;
23   v4[8] = 143868;
24   for ( i = 0; i <= 4; ++i )
25   {
26     memset(v2, 0, sizeof(v2));
27     v8 = 0;
28     v7 = 0;
29     v0 = v4[2 * i];
30     LODWORD(v6) = *(&v3 + 2 * i);  //v6的低位来源
31     HIDWORD(v6) = v0;         //v6的高位来源
32     while ( v6 > 0 )
33     {
34       v2[v8++] = v6 % 2;
35       v6 /= 2LL;
36     }
37     for ( j = 50; j >= 0; --j )
38     {
39       if ( v2[j] )
40       {
41         if ( v2[j] == 1 )
42         {
43           putchar('*');  //打印*
44           ++v7;
45         }
46       }
47       else
48       {
49         putchar(' ');  //打印空格
50         ++v7;
51       }
52       if ( !(v7 % 5) )
53         putchar(' ');  //打印空格
54     }
55     result = putchar('\n');
56   }
57   return result;
58 }

看来这就是我们需要的关键函数

代码作用:打印了一些东西在控制台上,调试一下看看

32Xdbg

调试之前,我们需要得到一些地址信息

main函数结束位置 00401773 

 ques函数开始位置 00401520 

 ques函数结束位置,即打印结束位置 00401724 

逻辑:在运行到mian函数结尾时,修改EIP指向que函数的入口位置,最后在que函数结束的位置下一个断点,方便我们F9直接运行到结束查看打印结果

 

F9

此时查看控制台

flag

NSSCTF{HACKIT4FUN}

标签:EIP,ebp,函数,esp,int,打印,dbg,v4,2020
From: https://www.cnblogs.com/demo41/p/18227691

相关文章

  • WinDbg基本原理和使用方法,掌握基本的调试技术,并能够应用于实际的调试工作中;高级调试技
    WinDbg初级应用的大纲:1.WinDbg基础知识WinDbg简介:介绍WinDbg是什么以及其在Windows调试和分析中的作用。安装与配置:指导学员如何安装和配置WinDbg调试环境,包括下载安装、符号配置等基本步骤。2.调试基础调试流程:解释调试的基本流程,包括启动目标程序、设置断点、执行程序......
  • 借助x64dbg及Scylla的UPX手工脱壳
    参考文章:https://bbs.kanxue.com/thread-268159.htm很多地方都是复制粘贴的,学习学习大佬的文章。寻找入口点1、加载程序F9运行,会发现停在push处,push操作将所有寄存器的值压栈,这一步之后会加载UPX的解压代码用于将原始程序解压。2、upx工作原理首先将程序压缩。所谓的压缩......
  • WinDbg 调试实战入门 - 调试第三方程序(记事本)
       专栏  ┇ 『Debug』『Debug』 上一篇  ┇ 《WinDbg源码级调试C++程序》WinDbg源码级调试C++程序_c++windbg调试经典项目解析-CSDN博客https://blog.csdn.net/weixin_41863029/article/details/138963604        在上一篇 《WinDbg源码级调......
  • 登上国际舞台!天翼云P4 EIP网关流量管理创新方案亮相CCGrid 2024!
    5月8日,第24届IEEE/ACM集群、云和互联网计算国际研讨会(CCGrid2024)在美国费城隆重举行。来自中国、美国、印度、法国等国家的学术及产业界代表齐聚一堂,围绕云计算相关议题进行深入探讨和交流,并带来最前沿的技术展示。天翼云云网产品事业部弹性网络产品线总监侯叶飞出席大会硬件系......
  • 洛谷 P8725 [蓝桥杯 2020 省 AB3] 画中漂流 的题解
    题目大意传送门思路考虑使用时空复杂度为O(tm)O(tm)......
  • 【CSP】202012-2 期末预测之最佳阈值
    2020年第21次CCF计算机软件能力认证  202012-2 期末预测之最佳阈值原题链接:期末预测之最佳阈值时间限制: 1.0秒空间限制: 512MiB目录题目背景题目描述输入格式输出格式样例1输入样例1输出样例1解释样例2输入样例2输出子任务解题思路AC代码期末预测之安......
  • 博弈论——洛谷P6560 [SBCOI2020] 时光的流逝
    [SBCOI2020]时光的流逝题目背景时间一分一秒的过着,伴随着雪一同消融在了这个冬天,或许,要是时光能停留在这一刻,该有多好啊。......“这是...我在这个小镇的最后一个冬天了吧。”“嗯,你可不能这辈子都呆在这个小镇吧。外面的世界很大呢,很大很大...”“唔...外面的世界...突然......
  • ES2020新特性概览
    以下是ES2020版本中的一些新特性:Promise.allSettled:Promise.allSettled()方法返回一个在所有给定的promise已被决议或被拒绝后决议的promise,返回的promise根据每个Promise的结果状态决定其决议方式(注意:与Promise.all()不同,Promise.all()只有全部成功时才会返回成功,有一个......
  • P8736 [蓝桥杯 2020 国 B] 游园安排
    P8736[蓝桥杯2020国B]游园安排一、问题简析本题考点是最长上升子序列。二分查找根据模板,我们需要实现一个二分查找,找到dp中首个大于等于A[i]的元素。比较的规则是字典序。//按字典序比较A[a]和A[b],returnA[a]<A[b]boolcmp(constint&a,constint&b){ i......
  • 题解:P6880 [JOI 2020 Final] オリンピックバス
    一个比较重要的性质:反转的边要在最短路上才会有贡献。我们可以先跑一遍最短路,记录下整颗最短路树,然后暴力的对每一条边进行判断,反转。我们建正反图各两个,分别以\(1\),\(n\)为起点。\(n\),\(1\)为终点。然后对每个图跑最短路,记录下最短路树。若不反转任何一条边,则答案为\(1\)......