尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

pwn中常用函数

pwn中常用函数
📅 发布时间:2026/6/19 11:02:52

pwn中常用函数

输入输出类

write()函数

*函数原型:**ssize_t write(int fd, const void *buf, size_t count)

函数功能:由fd指定输出的位置,将buf的内容进行输出,输出的长度为n

函数参数:

  • fd:文件描述符;write一般为1,由屏幕输出显示
  • buf:指定的缓冲区,即指针,指向一段内存单元;比如GOT表项
  • count:要写入文件指定的字节数,64位一般指针8字节,32位是4字节

使用示例:write(1,GOT地址,8|4):显示GOT对应函数的实际地址

备注:

x64传参:

  • rsi=p64(0x1)
  • rdi=p64(GOT)
  • rdx=p64(0x8)

read()函数

函数原型:ssize_t read (int fd, void *buf, size_t count)

函数功能:由fd指定写入内容的来源,将待写入的内容写入到buf,写入的长度为count

函数参数:

  • fd:文件描述符;read 为0,由键盘写入
  • buf:指定的缓冲区,即指针,指向一段内存单元;比如向.bss段写入’/bin/sh\x00’
  • count:要写入文件指定的字节数

使用示例:read(0, buf, t):向buf所指的地址写入t字节长度的内容,写入的内容由键盘输入

read(0, buf, 0x100);        // 从键盘读 0x100 字节

gets()函数

函数原型:
char *gets(char *s);

功能:
从 stdin 读一行(直到 '\n' 或 EOF),不检查长度。

参数:

  • s:目标缓冲区,经典栈溢出点

示例:

gets(buf);                  // 可无限溢出

scanf()函数

函数原型:
int scanf(const char *fmt, ...);
int sscanf(const char *str, const char *fmt, ...);

功能:
按 fmt 解析输入并写入后续指针。
%s 不限制长度 可溢出;%n 可写内存。

示例

scanf("%s", buf);           // 溢出
sscanf(input, "%d%n", &a, &offset); // 用 %n 写 offset

fputs()函数

函数原型

int fputs(const char *s, FILE *stream);

功能:把字符串 s 写入 stream,不自动加 '\n'。
参数:stream=stdout 可泄露信息。

示例

fputs(buf, stdout);        // 打印 buf 内容

fgets()函数

函数原型

char *fgets(char *s, int size, FILE *stream);

功能:从 stream 最多读 size-1 字节到 s,自动补 '\0'。
参数:size 正确时可防止溢出;但 size 过大仍可控。

示例

fgets(buf, 0x100, stdin);  // 安全读入

puts()函数

函数原型

int puts(const char *s);

功能:把 s 写到 stdout 并自动追加 '\n'。
参数:s 可控时可用作信息泄露。
示例:

puts(buf);                 // 打印并换行

转换类

atoi()函数

int atoi(const char *nptr);

功能:把字符串转 int,失败返 0。
参数:nptr 可控时可构造负数绕检查。

示例:

int atoi(const char *nptr);

strtoul()函数

unsigned long strtoul(const char *nptr, char **endptr, int base);

功能:按 base 解析无符号长整型;base=0 自动识别 0x/0。
参数:endptr 可置 NULL;结果可控做索引或大小。
示例:

size_t n = strtoul(buf, NULL, 0); // 输入 0xFFFFFFFF 得 -1

过滤类

seccomp()函数

函数原型

int seccomp(unsigned int operation, unsigned int flags, void *args);

功能:安装沙盒规则,限制可用 syscall。
参数:operation=SECCOMP_SET_MODE_STRICT 或 FILTER。
示例:

seccomp(SECCOMP_SET_MODE_STRICT, 0, NULL); // 只允许 read/write/exit

利用提示:先 seccomp-tools dump ./bin 看白名单,再挑允许 syscall 构造 ROP/ORW。

执行类

execve()函数

int execve(const char *pathname, char *const argv[], char *const envp[]);

功能:替换进程映像,真正的 syscall shell。
参数:pathname="/bin/sh";argv={"/bin/sh",NULL}。
示例:

execve("/bin/sh", NULL, NULL);

system()函数

int system(const char *command);

功能:把 command 交给 /bin/sh -c 执行。
参数:command="/bin/sh" 即拿 shell;指针可控可 one-gadget。
示例:

system("/bin/sh");         // 最简拿 shell

相关新闻

  • 2025年耐用的覆盖膜离型纸厂家选购指南与推荐
  • 【VSCode】VS Code 中使用 Cline AI
  • 2025年诚信的物联智慧箱式变电站高评价厂家推荐榜

最新新闻

  • 合肥想养猫狗先看看,萌宠宠园探店记录 - 园友3800037
  • 厦门二手奢侈品回收怎么避坑?高净值客户必须看的三个参数 - 奢品小当家
  • 2026昆山地下室防水市场专业解析与四家服务商适配推荐 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名) - 鼎壹万修缮说
  • FitGirl Repack Launcher:你的游戏下载管家,让找游戏变得简单有趣
  • 01人月神话阅读笔记
  • 民国老文书老照片别丢!北京记录者商行上门回收民国照片、任命书、毕业证书 - 深鉴新闻

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号