
pwn
文章平均质量分 68
p0int3r
这个作者很懒,什么都没留下…
展开
-
2021长安抗疫杯签到pwn
checksec:发现32位,开了NX,没别的保护,使用ida打开:发现打印出了一个gift,直接运行,竟然是buf的栈地址。binsh地址也知道了,首先填充栈,其中一开始是binsh的地址,然后填充栈,最后覆盖ebp为栈地址思路直接打开:from pwn import*p = process("./pwn1")#p = remote("113.201.14.253",16088)p.recvuntil("Gift:")leak = int(p.recv(10),16)p.sen原创 2022-01-20 15:23:00 · 262 阅读 · 0 评论 -
Glibc堆利用-Double Free
Glibc堆利用-Double Free漏洞成因:使用完一个chunk之后,只是free掉了指针,没有将内容置null漏洞结果:可以实现任意地址的写功能。0x01这里我们采用了师傅的样例程序,先检查该程序:看到:保护全开,使用ida进行反编译分析:发现经典菜单栏:并且实现了以下功能:void __fastcall main(__int64 a1, char **a2, char **a3){ int v3; // ebx int v4; // [rsp+Ch] [rbp-44h]原创 2021-10-24 17:50:00 · 390 阅读 · 0 评论 -
Pwn-Glibc堆利用-FirstFit&UAF浅析
0x1最近忙于堆的学习,在师傅们的指导下,对堆有了一知半解,找了一个网上的UAF题目来练手。题目链接:https://www.bilibili.com/video/BV1iE411H7cZ(再次感谢大佬发布的教学视频)先检查一下程序:发现保护全开。64位,反编译之后发现:在main函数中看到后门函数cat flag,但是条件是变量值为5。运行一下:大概意思是程序可以生成一个creature【堆】,里面包含姓名和等级两个参数数据,并且可以通过输入命令来改变这些变量:After you原创 2021-10-19 21:36:18 · 238 阅读 · 0 评论 -
浅谈rop-ret2libc原理以及解答-以攻防世界level3为例
栈溢出-rop-libc0x01、got表和plt表与动态链接、绑定延迟(重点理解)GOT概述1、当在程序中引用某个共享库中的符号时,编译链接阶段并不知道这个符号的具体位置,只有等到动态链接器将所需要的共享库加载进内存后,也就是在运行阶段,符号的地址才会最终确定。因此,需要有一个数据结构来保存符号的绝对地址,这就是GOT表的作用,GOT表中每项保存程序中引用其他符号的绝对地址。这样,程序就可以通过引用GOT表来获得某个符号的地址2、在X86结构中,GOT表的前三项保留,用于保存特殊的数据结构地址,其原创 2021-08-05 14:32:28 · 605 阅读 · 0 评论 -
浅谈ROP-ret2libc原理-题目源于[ctfwiki]
rop:在栈缓冲区溢出的基础上,利用程序中已有的小片段 (gadgets) 来改变某些寄存器或者变量的值,从而控制程序的执行流程。–[ctfwiki]传送门之前提到的ret2syscall,提到了静态链接,而libc主要利用了动态链接。0x01知识点:简单来说,静态链接就是直接在原有的基础之上进行访问,而动态链接就是直接放上一个链接来访问。1.plt表和got表拿一个c语言编写的printf函数为例,当调用printf函数时,先去plt表和got表寻找printf函数的真实地址。plt表指向原创 2020-12-18 00:13:20 · 980 阅读 · 0 评论 -
basic ROP-浅谈ret2syscall原理[ctf-wiki]
一道简单的ctf-wiki上的基本ROP题目。原理:控制程序执行系统调用,获取 shell。传送门0x01预备知识:系统调用通过 int 80h 实现,应用程序调用系统调用的过程是:1.把系统调用的编号存入 EAX;2.把函数参数存入其它通用寄存器;3.触发 0x80 号中断。execve函数:详见:execve函数0x02解题步骤:首先检查:ida打开之后,没有system函数,只有binsh关键字,开启NX保护。需要构造execve(“/bin/sh”, 0,0);其原创 2020-12-17 00:48:06 · 310 阅读 · 0 评论