PWN
文章平均质量分 54
prettyX
这个作者很懒,什么都没留下…
展开
-
ELF与动态链接
文本由b站视频,长亭科技公开课内容整理ELF文件格式1、ELFExecutable and Linkable Format 一种Linux下常用的可执行文件、对象、共享库的标准文件格式 还有许多其他可执行文件格式:PE、Mach-O、COFF、COM... 内核中处理ELF相关代码参考:fs/binfmt_elf.c ELF中的数据按照Segment和Section两个概念进行划分2、Segment用于告诉内核,在执行ELF文件时应该如何映射内存 每个Segment主要包含加载地原创 2021-06-13 09:59:12 · 324 阅读 · 0 评论 -
XCTF PWN get_shell
基本信息尝试运行IDA F5Expfrom pwn import *p=remote('111.200.241.244',52682)p.interactive()这道题...: )原创 2021-06-12 20:25:30 · 291 阅读 · 0 评论 -
XCTF PWN int_overflow
基本信息尝试运行IDA F5跟进,login()函数继续,check_passwd()函数对于上面的代码,关键在于v3,unsigned __int8类型check_passwd()函数传入最大参数长度为0x199(十进制409),v3用于接收串的长度,8bit,会发生溢出同时,下面dest长度只有14h,存在溢出0B100000000=0X100=256,256+4=260,256+7=263,所以传入check_passwd()函数的参数需要&..原创 2021-06-12 11:12:15 · 213 阅读 · 0 评论 -
XCTF PWN level2
查看基本信息尝试运行IDA F5继续查看脆弱函数,88h的缓冲区可以写入0x100,发现溢出点shift+F12,发现了“/bin/sh”原创 2021-06-10 15:25:04 · 252 阅读 · 0 评论 -
XCTF PWN level0
查看基本信息尝试运行IDA F5再看下vulnerable_function()函数,存在溢出同时,还存在callsystem()函数所以把返回地址,覆盖到callsystem()函数地址,即可Exp注意:因为Python2不再维护,编写脚本使用Python3,使用Python3和2的区别,就是把Payload作为占位的部分变成Bytes#python3from pwn import *p=remote('111.200.241.244',..原创 2021-06-09 20:10:07 · 306 阅读 · 2 评论 -
XCTF hello_pwn
先使用file查看checksec原创 2021-06-09 08:04:29 · 285 阅读 · 0 评论 -
堆溢出 Off-By-One 原理学习
Off-By-One严格来说,off-by-one是一种特殊的溢出漏洞,off-by-one指程序向缓冲区中写入时,写入的字节数超过了这个缓冲区本身所申请的字节数并且只越界了一个字节。 off-by-one,是指单字节缓冲区溢出,这种漏洞的产生往往与边界验证不严和字符串操作有关,也不排除写入的size正好就只多了一个字节的情况。 一般认为,单字节溢出是难以利用的,但是因为Linux的堆管理机制ptmalloc验证的松散性,基于Linux堆的off-by-one漏洞利用起来并不复杂,并且威力强大...原创 2021-04-11 18:32:11 · 2254 阅读 · 0 评论 -
Ubuntu 16.04: sys.stderr.write(f“ERROR: {exc}“)
今天在装pwndbg环境时,遇到这个问题解决办法:wget https://bootstrap.pypa.io/3.5/get-pip.pypython3 get-pip.py再执行完第二条命令之后,会打印出一封信,将wget 换上新的地址,再执行就可以了注意下载的新文件不会覆盖老文件,注意改名字再运行,即可...原创 2021-04-11 11:09:59 · 599 阅读 · 0 评论 -
堆溢出原理及利用(1)
根据B站“HWS计划2020安全精英夏令营培训”系列课程学习整理参考:CTF Wikihttps://www.cnblogs.com/unr4v31/p/14446412.html需要准备的环境glibc 2.23 ubuntu 16.04 glibc 2.27 ubuntu 18.04 glibc 2.31 ubuntu 20.04 堆概述在程序运行过程中,堆可以提供动态分配的内存,允许程序申请大小未知的内存。堆其实就是程序虚拟地址空间的一块连续的线性翻译 2021-04-05 12:45:30 · 4012 阅读 · 0 评论 -
Angr 安装
1、安装必要的软件环境sudo apt-get install python3-dev libffi-dev build-essential virtualenvwrapper2、开始正式安装angrmkvirtualenv --python=$(which python3) angr && pip install angr3、遇到 mkvirtualenv: command not found 问题在终端执行以下命令 sudo pip install原创 2020-12-01 16:50:49 · 1255 阅读 · 0 评论 -
PWN基础18:ret2libc 补充实例 学习
今天我们学习ret2libc1先来检查一下保护情况,开启了NX保护使用如下命令查找一下system函数再来找一下字符串ROPgadget --binary ./ret2libc1 --string "/bin/sh"此时再来计算一下溢出偏移Exp如下#Exp.pyfrom pwn import *context(arch="i386",os="linux",log_level="debug")p=process("./ret2libc1")e=ELF原创 2020-07-24 11:12:54 · 392 阅读 · 0 评论 -
PWN基础17:Ret2Libc 64位实例
复现一下Ret2Libc 32位下的内存布局针对这张图,我们在上一节做了细致的分析32位的调用方式32位系统中调用函数的方式:栈传递参数 构造函数调用将参数和返回地址放在栈上 构造执行write(1,buf2,20)后,再返回main函数64位的调用方式64位系统中使用寄存器传递参数:rdi、rsi、rdx、rcx、r8、r9(1-6个参数)这节课,我们研究的源码#include <stdio.h>char buf2[10]="ret2libc is goo原创 2020-07-24 09:20:56 · 4470 阅读 · 1 评论 -
PWN基础16:Ret2Libc 32位实例
这节我们研究的源码//L16.c#include <stdio.h>char buf2[10]="ret2libc is good";void vul(){ char buf[10]; gets(buf);}void main(){ write(1,"hello",5); vul();}原创 2020-07-21 21:22:11 · 1111 阅读 · 0 评论 -
PWN基础15:GOT表 和 PLT表
今天来学习GOT表和PLT表操作系统通常使用动态链接的方法来提高程序运行的效率。在动态链接的情况下,程序加载的时候并不会把链接库中所有函数都一起加载进来,而是程序执行的时候按需加载,如果有函数并没有被调用,那么就不会再程序中被加载进来。 现代操作系统不允许修改代码段,只能修改数据段,那么GOT表与PLT表就应运而生。参考https://zhuanlan.zhihu.com/p/130271689...原创 2020-07-18 22:40:18 · 2612 阅读 · 2 评论 -
PWN基础14:ELF 文件格式 概述
1、ELF文件格式ELF:Executable and Linkable Format 一种Linux下常用的可执行文件、对象、共享库的标准文件格式 还有许多其他可执行文件格式:PE、Mach-O、COFF、COM... 内核中处理ELF相关代码参考:fs/binfmt_elf.c ELF中的数据按照Segment、Section两个概念进行划分2、Segment用于告诉内核,在执行ELF文件时应该如何映射内存 每个Segment主要包含:加载地址、文件中的范围、内存权限、对齐方式等信息原创 2020-07-16 20:56:16 · 1055 阅读 · 0 评论 -
PWN基础13:Ret2Syscall 突破 NX保护
问题背景ret2text漏洞利用,是依赖于程序中存在system("/bin/sh")的函数,如果在程序本身中没有调用这个函数,那怎么办呢?我们的解决办法是使用ret2shellcode,自定义shellcode代码,但是这种方法的局限性是需要程序没有开启NX保护,那如果程序开了NX保护呢,又该如何呢?让我们一起来学习Ret2Syscall基础知识1、Gadgets:是指在程序中的指令片段,有时为了达到执行命令的目的,需要多个Gadget来完成我们的功能。Gadget最后一般都有ret指原创 2020-07-15 21:00:06 · 744 阅读 · 0 评论 -
PWN基础11:手动制作shellcode并测试
用于测试shellcode的代码如下#include <stdio.h>void main(){ char *shellcode; read(0,shellcode,1000); void(*run)()=shellcode; run();}下面是我们要测试的shellcode,就是在上一节课,我们用到的(上一节课:https://blog.csdn.net/prettyX/article/details/107301127)push原创 2020-07-14 20:49:35 · 885 阅读 · 0 评论 -
【持续更新...】相关资源汇总
漏洞查询网站https://www.rapid7.com/db https://www.cvedetails.com原创 2020-07-03 14:55:36 · 624 阅读 · 0 评论 -
PWN基础10:Ret2Shellcode 32位实例
0x01 Ret2Text的局限性原创 2020-07-14 08:18:43 · 1072 阅读 · 0 评论 -
PWN基础9:使用 gdb 附加调试 64位程序
场景描述此节课,我们讨论的问题场景如下:在做PWN题时,完成调试分析后,开始着手写Exp,在写Exp时一般不会一次写成功,此时我们需要调试分析问题出在哪里。那么此时,我们可以在Exp中,设置一个暂停,随后,通过gdb附加调试我们的ELF分析对象,此时Exp发送Payload,在ELF程序接收到后,再分析Payload在程序的栈等数据结构中的部署情况,找出错误,完成最后的Exp。OK,上述就是我们今天研究问题的大致场景开始这节课我们研究的源码如下//L9.c#include <std原创 2020-07-12 15:58:06 · 1233 阅读 · 0 评论 -
PWN基础8:Ret2Text 实例
基础知识1、栈溢出快速确定偏移量:pwndbgcyclic 200 cyclic -l 异常地址pedapattern create 200 pattern offset 异常地址2、定位system函数objdump -t XXX 查看程序中使用到的函数objdump -d XXX 查看程序中函数的汇编代码objdump -d -M intel XXX 查看程序中函数的汇编代码,并且汇编代码是intel架构的原创 2020-07-12 13:00:48 · 509 阅读 · 0 评论 -
PWN基础7:Rop-Ret2Text介绍 及 插件配置
ROP概述Return-oriented Programming,面向返回的编程,是一种新型的基于代码复用技术的攻击,攻击者从已有的库或可执行文件中提取指令片段,构建恶意代码 ROP的核心思想:攻击者扫描已有的动态链接库和可执行文件,提取出可以利用的指令片段(gadget),这些指令片段均以ret指令结尾,即用ret指令实现指令片段执行流的衔接。 ROP攻击是利用以ret结尾的程序片段,操作这些栈相关寄存器,控制程序的流程,执行相应的gadget,实施攻击者预设目标 ROP不同于return-to原创 2020-07-11 15:32:59 · 647 阅读 · 0 评论 -
PWN基础6:利用 格式化字符串漏洞 突破 Canary保护
今天来学习利用格式化字符串漏洞突破Canary保护先来复习下,开启Canary保护后,Canary在栈中的位置今天研究的源码如下//printf3.c#include <stdio.h>void exploit(){ system("/bin/sh");}void func(){ char str[0x20]; read(0,str,0x50); printf(str); read(0,str,0x50);}int原创 2020-07-11 12:36:00 · 1064 阅读 · 1 评论 -
PWN基础5:格式化字符串漏洞(一) 概述 及 调试
漏洞概述在C语言中,常用的输出函数有printf、fprintf、vprintf、vfprintf、sprintf等。对于这些输出函数,Format String是其第一个参数,一般称之为格式化字符串 格式化字符串在输出函数中的解析过程:...原创 2020-07-09 22:29:52 · 731 阅读 · 0 评论 -
PWN基础4:Canary保护
Canary保护概述在函数调用发生时,向栈帧内压入一个额外的随机DWORD,这个随机数被称为“Canary” 如果使用IDA反汇编的话,您可能会看到IDA会将这个随机数标注为“Security Cookie”,在部分书籍的叙述中会用Security Cookie来引用这种随机数 Canary位于EBP之前,系统还将在内存区域中存放一个Canary的副本 当栈中发生溢出时,Canary将被首先淹没,之后才是EBP和返回地址 在函数返回之前,系统将执行一个额外的安全验证操作,被称作“Security原创 2020-07-07 08:59:07 · 898 阅读 · 0 评论 -
PWN基础3:内存保护概述 和 溢出实例
0x01 概述1、操作系统提供了很多安全机制来尝试降低或阻止缓冲区溢出攻击带来的安全风险(1)Stack Canary栈溢出保护 是一种针对缓冲区溢出攻击的缓解手段。当函数存在缓冲区溢出攻击漏洞时,攻击者可以覆盖栈上的返回地址来让Shellcode能够得到执行。当启用栈保护后,函数开始执行的时候,会先往栈里插入Cookie信息,当函数真正返回的时候会验证Cookie信息是否合法,如果不合法就停止程序运行。攻击者在覆盖返回地址的是否往往也会将Cookie信息给覆盖掉,导致栈保护检查失败而阻止Sh原创 2020-07-05 00:35:00 · 762 阅读 · 1 评论 -
PWN基础2:基础理论
基础理论part 11、在CTF比赛中,PWN主要是指漏洞利用,也称为exploit。2、PWN题型的解题过程一般是寻找程序中存在的漏洞,并利用该漏洞达到一定的效果,如拿到shell、获取flag等。3、解答PWN题型的基本能力包括:程序逆向能力、漏洞查找能力、利用代码编写能力。4、PWN题型中的漏洞类型主要可以分为栈漏洞、堆漏洞、格式化字符串漏洞、整形漏洞、逻辑漏洞等。5、就难易程度来说,栈漏洞、格式化字符串漏洞、整形漏洞的难度要低于堆漏洞、逻辑漏洞。6、就考察点来说,栈漏洞、原创 2020-07-04 19:02:39 · 847 阅读 · 0 评论 -
PWN基础1:环境搭建
环境搭建1、下载Ubuntu:https://ubuntu.com/download/desktop并在虚拟机中搭建好LTS版本是什么意思?Ubuntu有些版本后面是带有LTS标识的。LTS是Long-Term Support的缩写,因此LTS版本也就是“长期支持版本”的意思。Ubuntu会为LTS版本提供长达5年的系统维护更新和技术支持,以确保系统能长期稳定和安全地运行,更加适合用于部署在服务器生产环境。2、虚拟机安装好后,更新一下系统sudo apt-get update原创 2020-07-04 11:08:43 · 932 阅读 · 0 评论 -
【学习笔记】CTF PWN选手的养成(四)其他漏洞 && 从CTF到实战
0X01 格式化字符串1、格式化串介绍:https://en.wikipedia.org/wiki/Printf_format_string2、格式化串相关函数:printf、fprintf、sprintf等3、格式化漏洞:触发形如printf(fmtstr)的调用,fmtstr="%$22p"时可以打印栈指针之后第22个DWORD,fmtstr="%1000c%22n"时可以将栈...原创 2019-12-06 00:31:01 · 1522 阅读 · 0 评论 -
【学习笔记】CTF PWN选手的养成(三)
atum大佬视频的总结第三章 课时2 堆漏洞的利用技巧0X01 基础知识1、操作系统中的内存布局(Linux)内核空间&用户空间,堆、栈等;cat /proc/pid/maps 要了解ELF文件结构2、什么是堆?数据结构:父节点总大于/小于子节点的特殊的完全二叉树 操作系统:程序在运行时动态申请和释放的内存空间(malloc,realloc,free,new,d...原创 2019-12-04 00:00:26 · 1291 阅读 · 0 评论 -
【学习笔记】CTF PWN选手的养成(二)
第三章 漏洞利用技术课时1 栈溢出-这些都是套路0X01 基础知识1、寄存器:rsp/esp、rbp/ebp等2、栈:3、函数调用:call、ret4、调用约定:__stdcall、__cdecl、__fastcall、__thiscall、__nakedcall、__pascal5、参数传递:取决于调用约定,默认如下X86从右向左入栈 X64优先寄存器,参数过...原创 2019-11-25 13:21:24 · 1904 阅读 · 0 评论 -
PWN ret2shellcode
今天天气阴,来做一下ret2shellcode。 记录一下。: )0X00 ret2shellcode原理ret2shellcode,就是,return to shellcode,即让程序中某个函数执行结束后,返回到shellcode的地址去执行shellcode。shellcode指的是用于完成某个功能的汇编代码,常见的功能主要是获取目标系统的shell。 ret2shellcode...原创 2019-11-22 21:08:31 · 1972 阅读 · 0 评论 -
PWN ret2text
今天跟着B站UP学习了ROP,向UP表示感谢。0X01 什么是ROP ROP就是shellcode的一种特殊写法。ROP技术就是不需要自己动手写shellcode,只是利用文件中给出的多个跳转指令,实现利用原有代码达到获取shell的目的。0X02 ROP使用的地方 1、当程序开启了NX保护机制;NX策略是使栈区域的代码无法执行,但我们可以使用RO...原创 2019-11-21 11:52:14 · 927 阅读 · 0 评论 -
【学习笔记】CTF PWN选手的养成(一)
在ichunqiu上看的视频,对学习内容进行整理,对Atum老师表示感谢。第一章 基础知识0X01 PWN 简介软件安全:软件安全专注于研究软件的设计和实现的安全研究对象:代码(源码、字节码、汇编等) 研究目标:发掘漏洞、利用漏洞、修补漏洞 研究技术:逆向工程、漏洞挖掘与利用、漏洞防御技术CTF PWN:软件安全研究的一个缩影研究对象:可执行文件,主要是ELF文件 研究...原创 2019-11-20 23:35:44 · 2173 阅读 · 0 评论