【pwn入门】用gdb实现第1个pwn

声明

本文是B站你想有多PWN学习的笔记,包含一些视频外的扩展知识。

有问题的源码

c 复制代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
char sh[]="/bin/sh";
int func(char *cmd){
	system(cmd);
	return 0;
}

int main(){
    char a[8] = {};
    char b[8] = {};
	puts("input:");
	gets(a);  // gets函数可以读取超过8个字节的数据,然后写入a,造成越界写b
	printf(a);
	if(b[0]=='a'){ // b数组出现'a',即进入获取shell的分支
		func(sh);
	}
    return 0;
}

直接hack

bash 复制代码
gcc question_1.c -o question_1_x64

用gdb调试理解这个过程

1.查看断点应该设置哪个位置

2.设置断点

输入13个a

3.查看寄存器的值

bash 复制代码
p $rbp-0x10

往0x7fffffffe330前面多打几个内存看看

bash 复制代码
x/20gx 0x7fffffffe310

可以看到输入输入13个a后,成功将b数组的值也越界写成aaaaa,所以b[0] == 'a'的条件会满足。

用gdb改变寄存器的值hack

1.将断点打在main

bash 复制代码
b main

2.打印$rip的汇编

bash 复制代码
x/20i $rip

3.在分支比较处设置断点

bash 复制代码
b *0x5555555552ce

4.通过GDB设置寄存器的值
0x61就是a的ascii码

  1. 程序进入到获取shell的分支
相关推荐
unable code5 小时前
攻防世界-Misc-Miscellaneous-200
网络安全·ctf·misc
unable code8 小时前
攻防世界-Misc-4-1
网络安全·ctf·misc·1024程序员节
金灰11 小时前
一带一路(金砖)--网络安全防护治理赛项
网络·计算机网络·安全·web安全·网络安全·网络攻击模型·安全威胁分析
Bruce_Liuxiaowei11 小时前
网站敏感文件_目录大全(分类记忆+风险标注)
运维·网络·网络协议·http·网络安全·https
脆皮瞎11 小时前
内网域渗透-信息收集
网络·网络安全
独角鲸网络安全实验室11 小时前
高危预警!React核心组件曝CVSS 9.8漏洞,数百万开发者面临远程代码执行风险
运维·前端·react.js·网络安全·企业安全·漏洞·cve-2025-11953
独角鲸网络安全实验室11 小时前
高危预警!React CVE-2025-55182 突破 RSC 防护,未授权 RCE 威胁 39% 云应用
前端·react.js·网络安全·前端框架·漏洞·rce·cve-2025-55182
玥轩_52112 小时前
静态路由原理 及实验案例
网络·网络协议·网络安全·智能路由器·路由器·交换机
bleach-12 小时前
应急响应之入侵检测排查——Windows篇—,Windows日志介绍分析
windows·安全·web安全·网络安全·系统安全
重生之我在番茄自学网安拯救世界13 小时前
网络安全中级阶段学习笔记(九):upload靶场实战(14-16关)-图片马制作与通过教学
笔记·学习·网络安全·文件上传漏洞·图片木马