PWN小速查 | PWN Notebook

PWN小速查 | PWN Notebook

Atomic Lv1

PWN小小速查 | PWN Notebook

一些记不住的琐碎小事,做题经常会用,放这里方便做题的时候对着看


系统调用速查 [System call]

SYSCALL的定义/原理

System Call是操作系统向用户空间程序提供的一组函数或接口,用于访问操作系统内核的功能和资源。通过System Call,应用程序可以请求操作系统完成诸如文件操作、内存管理、进程管理、网络通信等操作,从而实现对计算机系统的控制与利用。


System Call的实现原理涉及操作系统内核的设计和底层机制。通常,当应用程序发起System Call请求时,会触发以下过程:
1. 用户空间程序通过特定指令(Linux:x86为int 0x80, x86-64为syscall指令)将控制权转交给内核;
2. 内核根据指定的System Call编号进入相应的内核函数,并执行相关操作;
3. 内核将结果返回给用户空间程序,并将控制权返还给应用程序。

SYSCALL传参
64位:
系统调用号:rax寄存器
参数寄存器:

  1. rdi
  2. rsi
  3. rdx
  4. r10
  5. r8
  6. r9
  7. 个参数及之后通过栈传递

返回值:rax


32位:
系统调用号:eax寄存器
参数寄存器:

  1. ebx
  2. ecx
  3. edx
  4. esi
  5. edi
  6. 个参数及之后通过栈传递

返回值:eax

常用系统调用号

调用号 调用指令 参数1 参数2 参数3 备注
0 read uint fd
(0 for stdin)
char * buf size_t count ORW
1 write uint fd
(1 for stdout)
char * buf size_t count ORW
2 open char * filename
(“/flag”)
int oflags
(0)
int mode
(0)
ORW
59 execve char * bin
(“/bin/sh”)
char * const argv[]
(0)
char * env[]
(0)
getshell
常用

System V AMD64 ABI参数传递 [Linux Func Call]

Linux 下的调用约定叫做 “System V AMD64 ABI”,此约定主要在 Solaris,GNU/Linux,FreeBSD 和其他非微软OS上使用.
Linux 的 x64 下也只有一种函数调用约定,即 __fastcall ,其他调用约定的关键字会被忽略,也就是说 ABI 只有 __fastcall.

参数顺序:

  1. RDI
  2. RSI
  3. RDX
  4. RCX
  5. R8
  6. R9
  7. 第7个参数及往后压入栈中

Tips: 32位下linux传参直接压入栈中而不使用寄存器

///施工中///

  • 标题: PWN小速查 | PWN Notebook
  • 作者: Atomic
  • 创建于 : 2024-09-19 09:00:00
  • 更新于 : 2024-09-23 12:38:51
  • 链接: https://blog.atom1c.icu/2024/09/19/Pwn-notebook/
  • 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。