gdb的简单练习
创始人
2024-05-26 13:21:47

题目来自《ctf安全竞赛入门》

1.用vim写代码

vim  gdb.c

#include "stdio.h"
#include "stdlib.h"
void main()
{int i = 100;int j = 101;if (i == j){printf("bingooooooooo.");system("/bin/sh");}elseprintf("error............");
}

如果i==j

也就是100=101

那么就输出:bingooooooooo.

然后执行shellcode

但是这两个怎么可能相等嘛

2.用gcc生成可执行文件

首先用生成目标文件、gcc后边是源文件名字、-o后边的是目标文件名字

gcc   -g gdb.c  -o  gdbshouxi

然后会有一个文件,就叫做gdbshouxi

3.gdb

用gdb调试他

打开方式:

gdb  gdbshouxi

就进入gdb了

可以反汇编main函数

disassemble   main

3.1书上说让先下断点main

b main

断点下错了可以用d 标号删除

如果不运行下断点到下边那个地址的话到某个地址的话可能会出错

3.2然后运行

r

箭头所指就是即将要运行的

红色的是cmp比较函数,就是刚刚写的if

3.3下断点

b  *0x555555555162

3.4直接运行到断点处

c

发现要比较的是eax和rbp-0x4

3.5

查看下,给他改了

p $eax
x/w  $rbp-0x8
set $eax =0x65

x的用法参考这个

(1条消息) GDB查看指定内存地址的内容——指令x_Jeremy_ku的博客-CSDN博客_gdb查看地址内容

比较的是dword嘛双字节所以就是w了

或者改rbp-0x8也可以

但是set $rbp-0x8改的是它所指向的地址,并不是地址所指向的内容

改内容要set *地址

改的话记得加0x十六进制

3.6然后c

c

就可以执行到shellcode了

相关内容

热门资讯

冀沪高铁标杆列车1月26日起开... (来源:河北新闻网)转自:河北新闻网冀沪高铁标杆列车1月26日起开行石家庄至上海最短运行时间压缩至5...
《道路机动车辆生产领域行政处罚... 转自:光明日报  为进一步规范道路机动车辆生产领域行政处罚裁量工作,保障行政执法公平公正,工业和信息...
工业和信息化部印发《道路机动车... 来源:新华社  为进一步规范道路机动车辆生产领域行政处罚裁量工作,保障行政执法公平公正,工业和信息化...
苹果AI新合作:谷歌仅充当“幕...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:IT之家)I...
Meta拟裁员虚拟现实部门10... 据报道,Meta正持续将资源转向人工智能技术研发,为此计划裁减至少10%的虚拟现实研发部门Reali...