avatar
文章
56
标签
31
分类
9
主页
博文
  • 分类
  • 标签
  • 归档
友链
关于笔者
Zechariahの博客Art_of_shellcode
搜索
主页
博文
  • 分类
  • 标签
  • 归档
友链
关于笔者

Art_of_shellcode

发表于2025-02-22|更新于2025-08-28|PWN
|浏览量:

很有用的网址

https://www.exploit-db.com/shellcodes

https://v3rdant.cn/Pwn.The-Art-of-Shellcode/

PWN:手动编写 x64 基于syscall 的 shell code(TODO)_x64 syscall pwn-CSDN博客

文章作者: Zechariah
文章链接: https://zechariah-0703.github.io/2025/02/22/Art-of-shellcode/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zechariahの博客!
PWN
赞助
  • 微信
    微信
  • 支付宝
    支付宝
cover of previous post
上一篇
PWN基础-汇编(字节序寄存器-传参-指令速查)
寄存器字节序又称 端序 或 尾序(英语中用单词:Endianness 表示)。在计算机领域中,指电脑内存中 占用多个字节的数据的字节 在 内存中的排列顺序。 大端序(Big-Endian)将数据的低位字节存放在内存的高位地址,高位字节存放在低位地址。这种排列方式与数据用字节表示时的书写顺序一致,符合人类的阅读习惯。 小端序(Little-Endian),将一个多位数的低位放在较小的地址处,高位放在较大的地址处,则称小端序。小端序与人类的阅读习惯相反,但更符合计算机读取内存的方式,因为CPU读取内存中的数据时,是从低地址向高地址方向进行读取的。 为什么会有字节序,统一用大端序不行吗?答案是,计算机电路先处理低位字节,效率比较高,因为计算都是从低位开始的。所以,计算机的内部处理都是小端字节序。在计算机内部,小端序被广泛应用于现代 CPU 内部存储数据;而在其他场景,比如网络传输和文件存储则使用大端序。内存中的多字节数据相对于内存地址有大端和小端之分 , 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分 。 网络数据流同样有大端小端之分 , 也就是说,当接收端收到第...
cover of next post
下一篇
进阶ROP
进阶ROPret2__libc_csu_init(64位ELF)利用原理在64位程序中,函数的前6个参数是通过寄存器传递的,但是大多数时候,我们很难找到每一个寄存器对应的gadgets。 这时候,我们可以利用x64下的__libc_scu_init中的gadgets。这个函数是用来对libc进行初始化操作的,而一般的程序都会调用libc函数,所以这个函数一定会存在。我们先来看一下这个函数: libc_csu_init利用方法:.text:00000000004005C0 ; void _libc_csu_init(void).text:00000000004005C0 public __libc_csu_init.text:00000000004005C0 __libc_csu_init proc near ; DATA XREF: _start+16↑o.text:00000000004005C0 ; __unwind {.text:00000000004005C0 push ...
相关推荐
cover
2025-02-06
ELF文件保护机制
Linux ELF文件的保护主要有四种:Canary、NX、PIE、RELRO 1.CanaryStackCanary表示栈的报警保护。在函数返回值之前添加的一串随机数(不超过机器字长)(也叫做cookie),末位为/x00(提供了覆盖最后一字节输出泄露Canary的可能),如果出现缓冲区溢出攻击,覆盖内容覆盖到Canary处,就会改变原本该处的数值,当程序执行到此处时,会检查Canary值是否跟开始的值一样,如果不一样,程序会崩溃,从而达到保护返回地址的目的。 //GCC用法gcc -o test test.c // 默认情况下,不开启Canary保护gcc -fno-stack-protector -o test test.c //禁用栈保护gcc -fstack-protector -o test test.c //启用堆栈保护,不过只为局部变量中含有 char 数组的函数插入保护代码gcc -fstack-protector-all -o test test.c //启用堆栈保护,为所有函数插入保护代码-fno-stack-protector /-fstack-prote...
cover
2025-02-14
C语言函数原型整理
system当system函数执行的时候会利用到rdi里的参数 writewrite(1,write_got,8)是把write_got地址指向内存的内容的前8个字节写入到标准输出流中。ssize_t write(int fd, const void *buf, size_t count)参数说明:‌fd‌:文件描述符,表示要写入数据的文件或设备。文件描述符是一个整数,通常是由open系统调用返回的。例如,0表示标准输入(stdin),1表示标准输出(stdout),2表示标准错误(stderr)。‌buf‌:指向要写入数据的缓冲区的指针。这个指针可以是任何类型的数据,因为它是void类型的。count‌:要写入的字节数。函数会尝试从buf中写入count个字节的数据。‌返回值:正整数:表示成功写入的字节数,可能会小于count(例如,由于磁盘已满等原因)。0‌:表示没有写入任何数据。-1‌‌:表示发生错误,并设置`errno`来提供进一步的错误信息。 readssize_t read(int fd,void*buf,size_t count)参数说明:fd:是文件描述符buf:...
cover
2025-02-16
AWD学习
AWD流程 改init_hosts.py中的ip格式和port 改submit_flag.py中的提交方式和token 改round_wait_time patch 写exp 批量攻击 扫描IPimport requestsimport threading li = lambda x : print('\x1b[01;38;5;214m' + x + '\x1b[0m')ll = lambda x : print('\x1b[01;38;5;1m' + x + '\x1b[0m') def check_ip(i): try: url = f'http://192-168-1-{i}.awd.bugku.cn/' #* response = requests.get(url, timeout=0.5) if response.status_code == 200: li('[+] &...
cover
2025-04-08
NPC_final出题小记(通过fmt进行RSA-CRT Fault Injection)
前言 本题源码改自于2022 Samsung的SecureRunner 本题是一道二进制分析和密码学相结合的题,笔者认为出这种题还是很有趣的。 本题暂已托管至西安电子科技大学CTF终端供大家练习复现 链接:NPC²CTF 2025 - 西电 CTF 终端 其余用途均需通过 关于笔者 中的邮箱征得笔者同意 题目编写源码源码会开源到我的github仓库 解题步骤题目描述小睦的大脑里只有签名正确的命令才能执行,可小睦睡着了,Mortis 太 fw 了不知道私钥。 看来只能和 Mortis 把脑内小剧场破坏的乱七八糟才能拿 flag 了 (简单 Crypto + 签到 PWN = 也许还行的大粪 CRYpwnTO)(需要一点基础的二进制分析能力) 为了降低难度,把这题的密码考点(RSA-CRT Fault Injection)单独编了一个题(即task.zip中的just_a_hint.py)作为提示 靶机连接 连上靶机后忽略没什么用的剧情,结合文字信息和对各种选项的尝试,可以提炼出以下要点 选项1可以获取RSA公钥 选项2可以执行命令,但同时需要输入命令和这条命令正确的si...
cover
2025-02-18
PWN入门-整数溢出
基本数据类型再说整数溢出之前,我们首先的先来说一下C语言中的整型的数据分类。按数据类型分类主要分三类:短整型(short)、整型(int)、长整型(long)按符号分类:有符号、无符号并且每种数据类型都有自己的大小范围整形: #include <stdio.h>int main(){ unsigned short int a = 1; unsigned short int b = 65537; if(a == b){ printf("Int overflow successfully!\n"); } return 0;} 编译gcc -g test.c -o test运行一下程序输出Int overflow successfully!unsigned short int的范围是0~65535,对变量b的赋值超过了这个范围,因此hex的数据最高位被截断,从而变成了0x0001=1 示例XCTF攻防世界int_overflow - 吾爱破解 - 52pojie.cn只...
cover
2025-02-03
PWN入门-栈溢出
缓冲区溢出之栈溢出(strcpy)预备知识缓冲区溢出简单介绍缓冲区溢出:简单的说,缓冲区溢出就是超长的数据向小缓冲区复制,导致数据超出了小缓冲区,导致缓冲区其他的数据遭到破坏,这就是缓冲区溢出。而栈溢出是缓冲区溢出的一种,也是最常见的。只不过栈溢出发生在栈,堆溢出发生在堆,其实都是一样的。 栈的简单介绍栈是一种计算机系统中的数据结构,它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来),是一种特殊的线性表。栈的操作常用的有进栈(PUSH),出栈(POP),还有常用的标识栈顶和栈底。 进栈(PUSH):将一个数据放入栈里叫进栈(PUSH) 出栈(POP):将一个数据从栈里取出叫出栈(POP) 栈顶:常用寄存器ESP,ESP是栈指针寄存器,其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的栈顶。 栈底:常用寄存器EBP,EBP是基址指针寄存器,其内存放着一个指针,该指针永远指向系统栈最上面一个栈帧的底部。实例分析 源代码: #include<stdio.h>#include<...
avatar
Zechariah
舍弃此火,皆非吾焰
文章
56
标签
31
分类
9
Follow Me
公告
只要将线索与线索两点连线,就能“圆满小红花”解决!
目录
  1. 很有用的网址
最新文章
异构PWN(2)-ARM(2025领航杯_arm-ret2libc)
异构PWN(2)-ARM(2025领航杯_arm-ret2libc)2025-10-16
异构PWN(1)-初探
异构PWN(1)-初探2025-10-16
关节玩偶制作全流程
关节玩偶制作全流程2025-10-03
江苏移动“赋能建功”-二进制相关
江苏移动“赋能建功”-二进制相关2025-09-17
Cobalt_Strike 无 .cobaltstrike.beacon_keys 流量解密
Cobalt_Strike 无 .cobaltstrike.beacon_keys 流量解密2025-09-13
©2025 - 2026 By Zechariah框架 Hexo 6.3.0|主题 Butterfly 5.4.0-b2
搜索
数据加载中