jarvisoj_level2
#
这题其实蛮简单的但是涉及到了gdb的多线程调试,故记录一下。
尝试gdb调试,提示gdb开始调试子进程,然后子进程退出,打开ida查看一下,可以看到在vulnerable_function()中,在system("echo Input:");
才进入漏洞函数,那么我们就需要又
由于system函数会打开一个shell执行命令,会folk
一个子进程,因此我们需要使gdb一只调试主进程,
gdb多线程调试常用操作
GDB调试多进程的命令介绍和演示 - 刘跑跑 - 博客园 (cnblogs.com)
info inferiors | 查看所有进程 |
---|---|
inferiors 2 | 切换到编号为2的进程 |
detach inferiors 2 | detach掉编号为2的进程 |
kill inferiors 2 | kill掉编号为2的进程 |
set follow-fork-mode parent | 只调试父进程(GDB默认) |
set follow-fork-mode child | 只调试子进程 |
show follow-fork-mode | 查看follow-fork-mode当前值 |
set detach-on-fork on | 只调试一个进程,父进程或子进程(GDB默认) |
set detach-on-fork off | 同时调试父子进程,另一个进程阻塞在fork位置 |
show detach-on-fork | 查看detach-on-fork当前值 |
set schedule-multiple off | 只有当前进程会执行,其他进程挂起(GDB默认) |
set schedule-multiple on | 所有的进程都会正常执行 |
show schedule-multiple | 查看schedule-multiple当前值 |
set follow-fork-mode parent,之后就可以愉快cyclic
了
jarvisoj_level02
exp
1 | #! /usr/bin/env python3 |
level2_x64
exp
1 | #! /usr/bin/env python3 |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Randolfluo's blog!