PWN
Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE)
Pwn2own 2022 Tesla 利用链 (ConnMan 堆越界写 RCE) Opening the doors and windows 0-click RCE on the Tesla Model3 HEXACON2022 - 0-click RCE on the Tesla Model 3 ......
Pwn2own 2023 Tesla 利用链摘要
Pwn2own 2023 Tesla 利用链摘要 https://www.youtube.com/watch?v=6KddjKKKEL4 攻击链: 利用蓝牙协议栈自己实现的 BIP 子协议中的堆溢出,实现任意地址写,修改函数指针 ROP 修改蓝牙固件,由于 wifi 和 蓝牙固件位于同一 ......
【pwn】[FSCTF 2023]Fi3h --orw利用,沙箱检测
还是先查一下程序保护情况 然后看一下代码逻辑 可以发现这里的代码还是挺多的,这里讲一下几个关键部分,首先是开头的addr = (__int64)mmap(0LL, 0x1000uLL, 7, 34, -1, 0LL);将addr这个地址开始的地方变成rwx权限,我们看一下这个地址是哪里 发现addr ......
【pwn】[FSCTF 2023]What am I thinking? --pwntools工具的利用
这道题没给附件,直接就是nc 这个题目的意思是,我们随机输入一个数,然后发给我们一段base64加密后的密文,真正num就在里面,我们现在写个pwntools脚本提取一下这段base64密文,解密一下,看看是什么东西 exp: io=remote("node4.anna.nssctf.cn",280 ......
【pwn】[FSCTF 2023]stackmat --格式化字符串漏洞泄露canary
看一下程序的保护状态 开了canary,接着看一下代码逻辑 可以发现,这里有格式化字符串漏洞,同时gets函数有栈溢出漏洞,现在只需要确定我们输入到buf的内容在格式化字符的第几个参数就行 可以确定buf在格式化字符串的第8个参数,又因为buf的偏移是0x20,所以canary在11个参数,因为ca ......
【pwn】[FSCTF 2023]2str --整数溢出绕过
检查一下保护状态 接着ida看代码逻辑 看func函数 第一次看真没发现有什么漏洞,题目给了backdoor,虽然strlen可以\x00绕过,但是strcpy函数也限制漏洞的实现。仔细看的话,会发现v3的类型是 unsigned __int8 v3; 说明v3是一个字节来表示的,可表示的范围只有0 ......
2023届的信安大挑战——pwn(持续更新!)
这是我打的第一次比赛,主打的pwn方向,纪念我的成长 需求:一定的linux系统的命令指令知识,基础的汇编代码,配置好了的虚拟机(打pwn建议是ubuntu),pwntools的使用,python的使用,ROPgadget的使用 每次把文件拖入IDA前记得用Exeinfope进行检查一下,看是x86 ......
【pwn】[HNCTF 2022 WEEK2]pivot --栈迁移
栈迁移的利用的过程不是很复杂,原理方面是比较麻烦:栈迁移原理介绍与应用 - Max1z - 博客园 (cnblogs.com) 这里简述一下栈迁移的利用过程: 我们先来看一下这道题的程序保护情况: 开了canary,接着看代码逻辑 这里的printf("Hello, %s\n", buf);可以发现 ......
【pwn】[HNCTF 2022 WEEK2]ret2libc --rop构造泄露libc
这道题是简单的libc,不过多分析了 exp: from pwn import * from LibcSearcher import * io=remote("node5.anna.nssctf.cn",28341) elf=ELF("./pwn") put_got=elf.got["puts"] ......
【pwn】[CISCN 2023 初赛]funcanary --爆破canary和pie
拿到程序先查一下保护状态 可以发现保护全开,再看一下程序的逻辑 可以发现,这里有一个fork函数: C语言中的fork()函数用于创建一个新的进程,该进程是原始进程(父进程)的一个副本。这个副本将从fork()函数之后的代码行开始执行,父进程和子进程在此处分别继续执行不同的代码。fork()函数的返 ......
【pwn】[HGAME 2023 week1]choose_the_seat --数组越界,劫持got表
查一下程序保护情况 发现是partial relro,说明got表是可以修改的,下一步看代码逻辑 看到这一段 puts(&seats[16 * v0]);存在数组越界的漏洞,因为上面的代码没有对v0进行负数的限制,v0可以是负数,我们来看一下seat的数据 可以发现seat上面的数据就是got表,s ......
【pwn】[UUCTF 2022 新生赛]easystack --pie爆破
查看程序保护 发现开了pie: partial write(部分写入)就是一种利用PIE技术缺陷的bypass技术。由于内存的页载入机制,PIE的随机化只能影响到单个内存页。通常来说,一个内存页大小为0x1000,这就意味着不管地址怎么变,某条指令的后12位,3个十六进制数的地址是始终不变的。因此通 ......
【pwn】[HUBUCTF 2022 新生赛]ez_pwn --随机数
查一下程序保护状态 保护全开,看一下代码逻辑 逻辑比较简单,就是输入一个用户名,然后进行随机数运算,这里可以使用ctypes模块,形成和服务器那边一模一样的随机数 from pwn import * import ctypes context(os='linux',arch='amd64',log_ ......
【pwn】[HGAME 2023 week1]simple_shellcode --orw利用攻击
先查看程序的保护状态 可以看到,保护全开,拖进ida看主函数的逻辑 可以看到有个mmap函数: mmap() 函数是Unix和类Unix操作系统中的一个系统调用,用于在进程的地址空间中映射文件或者其它对象。这样做的好处是可以让文件直接映射到内存中,从而避免了频繁的文件 I/O 操作,提高了文件的读取 ......
pwn环境搭建脚本
目录pwn环境搭建脚本 pwn环境搭建脚本 分享在ubuntu系统上一站式搭建pwn环境的脚本。 安装脚本如下,挂着梯子的情况下可以直接使用国外的官方源,建议安装的ubuntu系统版本至少为ubuntu:18.04,用可使用sudo命令的普通用户安装而不建议直接使用root用户安装。 如果无法访问国 ......
使用docker调试和部署pwn题
目录使用docker调试和部署pwn题0x0 前言0x1 调试环境0x2 出题模板0x3 使用技巧 使用docker调试和部署pwn题 使用docker快速部署不同架构、不同版本的调试环境。给出docker环境下pwn题部署模板。 0x0 前言 关于docker的基础概念不做过多的介绍。可以到Doc ......
队内pwn训练营资料分享
目录队内pwn训练营资料分享前言培训材料写在最后 队内pwn训练营资料分享 分享队内第一期 pwn 训练营的资料。 前言 为了提升队内师傅的 pwn 技巧,之前在内部举办了一次为期约两个月的 pwn 训练营。从结果来看,培训后师傅们的能力有着显著的提升,此次训练营取得了预期的效果。 本着开源与共享的 ......
sniperoj-pwn100-shellcode-x86-64
来源 本题来自ctfi-wiki,是基本ROP中shellcode的一道例题 查看保护 程序只开启了位置无关保护 PIE 并且有可写可执行的段 反汇编 发现程序中直接输出了buf的地址,所以PIE就不起作用了 可以看到,后面read函数还调用了buf,很显然就是要利用buf这个段了 然后在汇编代码发 ......
【pwn】ez_pz_hackover_2016 --pwngdb和pwntools的结合,动态调试
首先checksec 没开nx,说明堆栈可执行,初步考虑需要shellcode,然后拖进ida看主函数逻辑 看chall函数 printf("Yippie, lets crash: %p\n", s)这里泄露的s的地址,即栈上的地址 这里的输入的s数组是不存在栈溢出的,这里的关键代码是这一段 res ......
2016 CCTF pwn3
本题来自ctf-wiki,是一道 hijack GOT的例题 确定保护机制 发现主要开启了NX保护 分析程序 用ida反汇编一下,这个程序主要是实现了用正确用户名、密码登录FTP,具有get、put、dir三个基本功能 首先是第一个函数ask_username,发现它读取我们键入的字符串,并且每个字 ......
[NewStarCTF WEEK5] pwn-planet 详解
这道题目更多是考pwner的逆向功底(虽然程序逻辑也不是非常复杂=_=) 老规矩,先checksec查看程序 保护全开 看一下main函数 __int64 __fastcall main(int a1, char **a2, char **a3) { unsigned int v4; // eax ......
鹏城杯2023初赛 pwn(未完)
silent 打开ida一看,没有输出函数,只有一个栈溢出。跟巅峰极客的linkmap有点像,都是没有输出函数而且full relro,没法打ret2dl_resolve 但是linkmap那道题中是有能函数能将地址放到bss上的,所以它可以把read的地址放到bss上,然后通过修改bss上的rea ......
【pwn】整数溢出
这是ctfshow上面的一道题 这边v1和v2定义时都是int,有符号整数,想让v1-v2=9,可以考虑负数,但是这个函数过滤了负号 if ( strchr(s, 45) ) return 0LL; 可以考虑输入比较大的数有符号溢出成负数, 输入4294967295的话,就会解析成-1,然后8-(- ......
鹏程杯子2023 pwn
主要就是修改stdin的最后几位,使他变为write,然后泄露libc,为所欲为即可。 本人是卡在不知道stdin那里可以修改。 然后使用一下jmp qword rbp这个gadget 0x400a93那个。 from evilblade import * context(os='linux', a ......
pwn环境部署
PWN环境搭建 前言:自己开始学pwn时使用的是kali,稀里糊涂的配了点东西就用用了,后面都是用ctfshow配置好的集成环境,招新赛时有同学问我如何部署pwn环境,出现的各种问题令人鸡肋,于是就诞生了这 集各种博客的博客 tips: 1 建议新手按1 、2(3)、5、6、9、10、11走 2 如 ......
CTF-pwn-堆入门-day1
什么是堆 堆是可以根据运行时的需要进行动态分配和释放的内存,大小可变 由程序员决定 malloc new\free delete 栈用于函数分配固定大小的局部内存 由程序决定 但是为什么不都在栈上进行函数调用,反而要去对上进行调用 堆的实现重点关注内存块的组织和管理方式,尤其是空闲内置块:(分地) ......
【pwn】ciscn_2019_s_3 -- rop,gadget利用,泄露栈地址
这道题挺好的,可以帮助我更好的理解gadget的利用以及rop技术 首先,查一下程序保护情况 拖进ida分析 这里sys_read和sys_write是系统调用函数,看汇编可以分析出来 我们首先要了解一下64位系统的系统调用 传参方式:首先将系统调用号 传入 rax,然后将参数 从左到右 依次存入 ......
在一个简单的pwn题目中探究执行系统调用前堆栈的对齐问题
题目介绍:在输入AAAAAAAAAAAAAAAAAAAAAAAAA后,程序会打开一个shell,这是为什么?字符串中的A能否更换为@? 1.程序接收输入AAAAAAAAAAAAAAAAAAAAAAAAA 获得shell的原理: .text:0000000140001584 public vuln . ......
【pwn】[SWPUCTF 2022 新生赛]InfoPrinter--格式化字符串漏洞,got表劫持,data段修改
下载附件,checksec检查程序保护情况: No RELRO,说明got表可修改 接下来看主程序: 函数逻辑还是比较简单,14行出现格式化字符串漏洞,配合pwntools的fmtstr_payload模块可直接攻击,然后就是题目提供了libc,然后第10行又泄露puts函数的地址,可直接计算出基址 ......