【WinDbg】学习以及在CTF中解题

这篇具有很好参考价值的文章主要介绍了【WinDbg】学习以及在CTF中解题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、WinDbg介绍

WinDbg是一款Windows强大的调试器,可以调试0和3环的程序。

在实际开发中,可以调试我们的错误程序,从而定位关键代码,进行程序代码修复。

WinDbg 是一种调试器工具,由微软公司开发,用于分析和调试 Windows 操作系统和应用程序。它提供了强大的调试功能,可以帮助开发人员识别和解决各种软件问题。

以下是 WinDbg 的一些主要特点和功能:

  1. 内核级和用户级调试支持: WinDbg 可以用于内核级别的调试(如 Windows 内核、驱动程序等)和用户级别的调试(如应用程序、DLL 等),使开发人员能够全面分析和调试整个系统栈。

  2. 符号和源代码支持: WinDbg 可以与符号文件(PDB 文件)结合使用,以获得更详细的调试信息,包括函数名、变量名和源代码行号等。这对于理解和追踪代码执行路径非常有帮助。

  3. 调试器扩展: WinDbg 支持通过扩展插件(例如 JavaScript 脚本)来增强其功能。这些扩展可以自定义命令、自动化任务、数据分析等,使调试过程更高效和灵活。

  4. 远程调试: WinDbg 支持在远程计算机上进行调试,这对于分析在另一台计算机上发生的问题非常有用。

  5. 内存分析: WinDbg 可以帮助分析内存转储文件(如 minidump、完全转储等),以了解程序崩溃或异常终止的原因。

  6. 性能分析: WinDbg 提供了一些性能分析工具和命令,可以帮助开发人员识别和解决性能瓶颈问题。

  7. 脚本和自动化: WinDbg 具有自己的脚本语言(类似于 JavaScript),允许开发人员编写脚本来执行自动化任务,例如批量调试、数据提取等。

WinDbg 是一款功能强大且灵活的调试器工具,可用于分析和解决各种 Windows 软件问题。它在软件开发、故障排除和性能优化方面都扮演着重要角色,并广泛应用于开发人员和系统管理员的工作中。

2、Windbg安装

Windbg 10需要下载WindowsSDK 然后进行安装即可。

安装这一步属于基础,按照搜索到的步骤进行安装即可

Windbg 10 自带了帮助文档

‍3、dmp文件介绍

.dmp 文件是一种用于存储系统或应用程序崩溃时的信息的内存映射文件 dmp 文件通常包含了在崩溃或异常事件发生时系统或应用程序的内部状态信息和堆栈跟踪信息,它们对于诊断问题和进行调试非常有用。

当程序运行到某些重大错误的时候,windows会帮我们生成一个.dmp文件,这里的dmp就是文件进程的内存镜像,可以把程序的执行状态通过调试器保存在其中。

【----帮助网安学习,以下所有学习资料免费领!加vx:yj009991,备注 “博客园” 获取!】

 ① 网安学习成长路径思维导图
 ② 60+网安经典常用工具包
 ③ 100+SRC漏洞分析报告
 ④ 150+网安攻防实战技术电子书
 ⑤ 最权威CISSP 认证考试指南+题库
 ⑥ 超1800页CTF实战技巧手册
 ⑦ 最新网安大厂面试题合集(含答案)
 ⑧ APP客户端安全检测指南(安卓+IOS)

可以使用任务管理器进行生成

创建转储文件,即可生成对应的dmp文件

‍4、pdb文件介绍

.pdb 文件是用于存储调试信息的程序数据库文件。 pdb 文件包含了有关源代码的符号信息,如变量名称、函数名称、类型信息以及源代码文件和行号的映射。这使得调试器能够将二进制文件中的地址映射回源代码。

‍5、Windbg基础命令

提供debugger.chm文件(下载安装Windbg10自带)

debugger.chm 命令已经很全了,这里只总结常用的指令。

windbg的指令分成以下几类

  • 标准命令

  • 元命令

  • 扩展指令

标准命令相当于是内建在windbg中的默认指令。 元命令则是提供给标准指令中没有的指令,调用时开头要加上.​符号。 扩展指令则是用于实现针对特定目标的调试功能,使用前要加上!​符号,其完整的调用格式为:

!nameofExtentModule.nameofExtentCommand 参数

其中如果扩栈模块已经加载了,那么nameofExtentModule.​不是必须的,windbg会直接查找。

5.1 执行、调试相关

dt

The dt command displays information about a local variable, global variable or data type. This can display information about simple data types, as well as structures and unions.

dt命令看可以显示局部变量、全局变量或数据类型的信息。它也可以仅显示数据类型。即结构和联合(union)的信息。

#查看当前线程块
dt _teb

d 查看数据

默认格式如下

d [type] [address range]

d这个命令能够查看指定地址和内存的内容,其中常用的有dd(使用双字节来查看内存内容),如:

dd 77400000

!peb

可以查看当前进程中的peb的基本情况。

bp

The bpbu, and bm commands set one or more software breakpoints. You can combine locations, conditions, and options to set different kinds of software breakpoints.

指令格式如下

bp <address>

常见的下断点的方式。对应的清除断点的方式为bc num,而列出断点的方法为bl

g

最基本的指令,运行当前程序。

u

将指定的地址反汇编:

u[u|b] address(.表示当前的程序执行地址)
uu Address L[Length]

其中uu和ub可以指定当前反汇编的长度(暂时没看出什么区别,似乎是ub的话使用.会自动计算从函数开始的地址进行汇编)。可以使用以下的语法进行长度的指定

使用L表示后面的数字表示的是长度

r

查看当前的寄存器 同时可以修改当前的寄存器,比如说:

r @eax=1

将当前的eax寄存器的值修改成1

ed

ed address

ed [address][content]

将当前的内存修改成指定值 例如

ed 08041000 11111111

将地址08041000处的内容修改成11111111

p

常见指令,单步步过。除此之外还有:

  • p 2 // 2为步进数目

  • pc // 执行到下一个函数调用处停下 【Step to Next Call】

  • pa 7c801b0b // 执行到7c801b0b地址处停下 【Step to Adress】

t

单步步入

k

查看栈帧调用顺序

5.2 调试辅助相关

.sympath

表示当前的符号加载情况。符号能够帮助我们更加方便的分析程序。

.sympath+ D:\Filename

将D:\Filename添加到符号查找的路径中。 关于符号,其中lm​指令可以检查当前的文件中是否加载了符号文件:

  • deffered:表示延迟绑定

  • pdb symbols:表示已经加载当前符号

.load

.load dllname

导入指定名字的dll文件,常常用于导入插件

5.3 漏洞利用相关

!py mona

mona​是一个好东西哈,可以用来生成ROP​,查找Gadget​,进行漏洞挖掘等等。

生成ROP Chain

!py mona rop -m "module"

利用module生成ROP Chain​‍

6、实战:windbg分析题目

这里使用了WindbgPreview来分析这道dmp

题目描述:

赛题描述:explorer.exe进程已经被木马感染了,现已经获取explorer.exe进程的dump文件,尝试从DUMP文件中找到flag

打开的效果:

使用第一条命令:

!analyze -v

!analyze -v​ 是 WinDbg 调试器中的一个命令,用于自动分析崩溃的原因。这个命令会执行一些步骤来帮助你找到崩溃的根本原因,包括输出调用栈、异常信息、可能引起问题的模块以及其他相关信息。

!analyze 是命令,-v表示详细输出的参数

发现没什么信息,尝试使用 命令 lm,列出当前加载的模块

根据题目描述,感觉像是注入了恶意dll

输出了很多结果

这里有个小技巧,加载了对应符号的pdb,可以先排除

这么多dll,怎么分析?

这里再教一个小技巧,系统dll的地址一般都很高。

这里就有一个很可疑的dll

地址这么低,和系统dll的地址显得格格不入

猜测这是可疑dll,使用命令进行分析

start    end        module name
10000000 1000e000   stolen     (deferred)

将光标移动到stolen,windbgpreview会输出一段信息:

或者运行命令:​lmv m stolen

lmv m 是 WinDbg 调试器中的一个命令,用于显示指定模块的详细信息。该命令可以帮助你查看模块的基地址、文件名、调试符号等信息。
0:030> lmDvmstolen
Browse full module list
start    end        module name
10000000 1000e000   stolen     (deferred)           
    Image path: C:\Users\Administrator\Desktop\stolen.dll
    Image name: stolen.dll
    Browse all global symbols  functions  data
    Timestamp:        Thu Apr 20 11:33:18 2017 (58F82BFE)
    CheckSum:         0000E4F8
    ImageSize:        0000E000
    Translations:     0000.04b0 0000.04e4 0409.04b0 0409.04e4
    Information from resource tables:

尝试寻找:​C:\Users\Administrator\Desktop\stolen.dll

发现没有。。。

在内存中也没有数据,因为还没映射

那么我们就查看整个内存空间布局,看看能不能找到相应的映射数据,(在dll对应的范围内)

!vadump
​
!vadump 是 WinDbg 调试器中的一个命令,用于显示虚拟地址空间 (Virtual Address Space) 的详细信息。
该命令将输出当前进程的虚拟地址空间中每个 VAD(虚拟地址描述符)的信息。
VAD 是操作系统内核用于管理进程虚拟内存的数据结构之一。
通过使用 !vadump 命令,可以查看每个 VAD 的起始地址、结束地址、保护标志、镜像文件名等信息。
​
BaseAddress: 10001000
RegionSize:  000062f4

flag如下:

flag{acaa16770db76c1ffb9cee51c3cabfcf}

更多网安技能的在线实操练习,请点击这里>>

  文章来源地址https://www.toymoban.com/news/detail-760721.html

到了这里,关于【WinDbg】学习以及在CTF中解题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【CTF】CTF竞赛介绍以及刷题网址

    CTF(Capture The Flag)中文一般译作夺旗赛,在网络安全领域中指的是网络安全技术人员之间进行技术竞技的一种比赛形式。CTF起源于1996年DEFCON全球黑客大会,以代替之前黑客们通过互相发起真实攻击进行技术比拼的方式。发展至今,已经成为全球范围网络安全圈流行的竞赛形

    2024年02月03日
    浏览(39)
  • CTF解题-web类

    1.题目描述: 解决方法: 工具的使用: 2.题目描述 解决方法:点击查询 1.题目描述: 解题思路: 2、题目描述【白名单检测】 解题思路: 3.问题描述: 在进行文件上传时,各种绕过方式都实验了一遍,都显示无法绕过; 当上传1.asp;.jpg时,返回错误页面,查看可知存在名

    2024年02月06日
    浏览(36)
  • CTF-[Web] MD5解题思路

    写在前面:最近练习了一些CTF中关于md5绕过的题目,总结了几种思路,本质没有太大变化,就是各种组合绕过,也是比较考察基础的,前段时间太摆烂了,好久没有更新了,革命尚未成功,同志仍需努力!!!   md5是一种信息摘要算法(目标是用于证明原文的 完整性 ),其

    2024年02月13日
    浏览(44)
  • [CTF/网络安全] 攻防世界 cookie 解题详析

    题目描述:X老师告诉小宁他在cookie里放了些东西,小宁疑惑地想:这是夹心饼干的意思吗? 根据提示,获取页面Cookie中的数据即可 页面提示 look here:cookie.php ,于是GET /cookie.php : 提示 查看HTTP响应 method 1 HTTP响应通常可以在浏览器的开发者工具中找到。 按下F12键打开浏览器

    2024年02月05日
    浏览(43)
  • [CTF/网络安全]攻防世界 easyupload 解题详析

    题目描述:一名合格的黑客眼中,所有的上传点都是开发者留下的后门 惯例,上传一句话木马 回显如下: 也就是说文件被过滤 抓包改后缀,.php1~.php9、.htaccess均被过滤(.htaccess 文件是一个用于配置 Apache Web 服务器的配置文件。它通常位于网站根目录或特定目录中,用来为该

    2024年02月08日
    浏览(55)
  • STM32在CTF中的应用和快速解题

    题目给的是bin文件,基本上就是需要我们手动修复的固件逆向。 如果给的是hex文件,我们可能需要使用MKD进行动态调试 主要还是以做题为目的 详细的可以去看文档:https://pdf1.alldatasheet.com/datasheet-pdf/view/201596/STMICROELECTRONICS/STM32F103C8T6.html SVD文件下载:https://github.com/posborne/c

    2024年02月04日
    浏览(53)
  • 记录一次CTF解题PHP反序列化

    序列化通俗来讲就是将对象转化为可以存储、传输的字符串,反序列化就是把那串字符串再变回对象。 例如: 这里序列化结果中的O就是object对象的意思,数字7代表着对象的函数名长度为7,然后就是对象名\\\"chybate\\\",然后这个数字 1表示对象有一个变量,大括号里的s代表的是

    2024年04月22日
    浏览(30)
  • [CTF/网络安全] 攻防世界 backup 解题详析

    题目描述:X老师忘记删除备份文件,他派小宁同学去把备份文件找出来,一起来帮小宁同学吧! PHP 脚本文件的备份文件名,通常采用以下命名方式: 在原始文件名后添加日期时间戳。例如,如果要备份名为 index.php 的文件,则可以将其备份文件命名为 index_20230521_004017.php。这

    2024年02月05日
    浏览(64)
  • [CTF/网络安全] 攻防世界 PHP2 解题详析

    翻译: 你能给这个网站进行身份验证吗? index.php是一个常见的文件名,通常用于Web服务器中的网站根目录下。它是默认的主页文件名,在访问一个网站时,如果没有特别指定页面文件名,则服务器会自动加载index.php文件。 在Web应用程序中,index.php文件通常是网站的入口文件

    2024年02月13日
    浏览(45)
  • CTFShow web1-7——CTF秀WEB模块解题思路

    CTFShow WEB模块详细通关教程, 受篇幅所限, 通关教程分为上下两部分, 第一部分为1-7关, 第二部分为8-14关, 本篇博客为1-7关的通关教程, 从解题思路和原理剖析两个方面进行讲解 这一关的重点在于注释, 由于开发人员的疏忽, 忘记删除注释中的敏感数据, 右键检查网页源码即可拿到

    2024年02月09日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包