Art_of_shellcode
发表于|更新于|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
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Zechariahの博客!
相关推荐

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('[+] &...

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:...

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...

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...

2025-02-11
PWN入门-基本ROP
基本ROP前言在了解栈溢出后,我们再从原理和方法两方面深入理解基本ROP 什么是ROPROP的全称为Return-oriented programming(返回导向编程),这是一种高级的内存攻击技术可以用来绕过现代操作系统的各种通用防御(比如内存不可执行和代码签名等)。通过上一篇文章栈溢出漏洞原理详解与利用,我们可以发现栈溢出的控制点是ret处,那么ROP的核心思想就是利用以ret结尾的指令序列把栈中的应该返回EIP的地址更改成我们需要的值,从而控制程序的执行流程。 为什么要ROP探究原因之前,我们先看一下什么是NX(DEP),NX即No-execute(不可执行)的意思,NX(DEP)的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。随着NX保护的开启,以往直接向栈或者堆上直接注入代码的方式难以继续发挥效果。所以就有了各种绕过办法,rop就是一种。 ROP(Return Oriented Programming),其主要思想是在栈缓冲区溢出的基础上,利用程序中已有的小...

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只...
公告
只要将线索与线索两点连线,就能“圆满小红花”解决!