![](https://img-blog.csdnimg.cn/20200228152026821.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
pwn
文章平均质量分 93
pwn专栏
_n19hT
Don't limit yourself!
展开
-
栈介绍&栈帧结构&堆栈操作
文章目录基本栈介绍函数调用栈基本栈介绍栈是一种典型的后进先出( Last in First Out )的数据结构,其操作主要有压栈(push)与出栈(pop)两种操作,如下图所示(维基百科)。两种操作都操作栈顶,当然,它也有栈底。高级语言在运行时都会被转换为汇编程序,在汇编程序运行过程中,充分利用了这一数据结构。每个程序在运行时都有虚拟地址空间,其中某一部分就是该程序对应的栈,用于保存函数调用信息和局部变量。此外,常见的操作也是压栈与出栈。需要注意的是,程序的栈是从进程地址空间的高地址向低地址增长的原创 2020-09-17 10:36:06 · 2576 阅读 · 0 评论 -
跟着CTF-Wiki学pwn|格式化字符串(1)
文章目录格式化字符串漏洞原理介绍格式化字符串函数介绍格式化字符串函数格式化字符串参数格式化字符串漏洞原理格式化字符串漏洞利用程序崩溃泄露内存泄露栈内存获取栈变量数值获取栈变量对应字符串泄露任意地址内存覆盖内存覆盖栈内存确定覆盖地址确定相对偏移进行覆盖覆盖任意地址内存覆盖小数字覆盖大数字格式化字符串漏洞原理介绍首先,对格式化字符串漏洞的原理进行简单介绍。格式化字符串函数介绍格式化字符串函数可以接受可变数量的参数,并将第一个参数作为格式化字符串,根据其来解析之后的参数。通俗来说,格式化字符串函数就是将计原创 2020-05-19 00:32:08 · 2026 阅读 · 0 评论 -
格式化字符串利器fmtstr_payload | 攻防世界 pwn进阶区 实时数据监测
文章目录0x00.看题0x01.检查保护0x02.利用fmtstr_payload构造payload0x00.看题健身回来,继续刷第二题,貌似和上一题一个风格啊。连名字都差不多,偏工业实际。不过这一题学到了一个新东西,fmtstr_payload.题目描述:小A在对某家医药工厂进行扫描的时候,发现了一个大型实时数据库系统。小A意识到实时数据库系统会采集并存储与工业流程相关的上千节点的数据...原创 2020-04-21 00:55:34 · 6578 阅读 · 0 评论 -
非预期解 |攻防世界 pwn进阶 反应釜开关控制
文章目录菜鸡独白0x00.看题0x01.查看保护0x02.懵...非预期0x03.后记菜鸡独白好久没做题了,看大佬们天天在朋友圈晒比赛成绩,不由感叹WTCL!今天下午无聊继续刷起ADworld。0x00.看题题目描述:小M在里一个私人矿厂中发现了一条TNT生产线中硝化反应釜的接口,反应釜是一种反应设备,非常的不稳定,会因为很多原因造成损坏,导致生产被迫停止。她怀疑这个工厂可能进行地下军火...原创 2020-04-20 20:24:52 · 998 阅读 · 0 评论 -
简单栈溢出与execve执行|攻防世界新手区level3
文章目录前言0x00.检查保护0x01.栈溢出漏洞0x02.one_gadget0x03.思路0x04.exp前言pwn新手区还残留一题,就是这个level3,当初好像是因为远程打不通所以没做掉.我记得当初好像是没有给库的,现在给了个libc_32.so.60x00.检查保护devil@ubuntu:~/adworld/pwn$ checksec level3 [*] '/home/de...原创 2020-03-26 01:22:51 · 692 阅读 · 0 评论 -
one_gadget用法|攻防世界pwn进阶区babystack
文章目录0x00.检查保护0x00.检查保护devil@ubuntu:~/adworld/pwn$ checksec babystack[*] '/home/devil/adworld/pwn/babystack' Arch: amd64-64-little RELRO: Full RELRO ;无法修改got表 Stack: Canary fou...原创 2020-03-25 01:17:23 · 8210 阅读 · 0 评论 -
realloc函数UAF利用|攻防世界pwn进阶区supermarket
文章目录思路0x00.tar解压0x01.查看保护0x02.查看程序并调试0x03.漏洞分析realloc函数详解0x04.利用思路利用过程exp编写思路0x00.tar解压下载获得压缩包文件,解压之后放进ubuntu中发现还是一个tar格式压缩包。tar -xf filename附:linux下tar命令详解解压得到一个libc.so.6的库和一个可执行文件0x01.查看保护...原创 2020-03-21 21:55:44 · 946 阅读 · 0 评论 -
深入探究64位rop链构造,wp中常见的万能gadgets详解| 攻防世界pwn进阶区welpwn
文章目录前言思路分析0x00.检查保护机制0x01.找到溢出点0x02.跳过echo在buf上构造rop0x03.选择合适的gadgets0x04.万能的通用gadgets利用过程使用DynELF使用LibcSearcher前言这一题做的时间跨度比较长了,断断续续做了一天多,然后尝试了两种方式,一种是DynELF泄露system地址,还有一种是利用python的LibcSearcher模块得到...原创 2020-03-20 19:49:27 · 1782 阅读 · 0 评论 -
Ubuntu安装LibcSearcher|泄露已知libc版本的libc地址工具
文章目录0x00.安装方法0x01.使用方法LibcSearcher是python的一个库,在做pwn题的时候通常会用到,作用是泄露已知libc库版本的libc地址。0x00.安装方法 1. git clone https://github.com/lieanu/LibcSearcher.git 2. cd LibcSearcher 3. sudo python setup.py in...原创 2020-03-20 18:46:21 · 2808 阅读 · 0 评论 -
堆指针越界&堆上布置shellcode|攻防世界pwn进阶区 note-service2
文章目录前言思路分析0x00.检查保护机制0x01.查看程序功能0x02.ida查看逻辑0x03.利用思路利用过程0x00.选一段shellcode布置在堆上0x01.计算jmp short指令要跳多少字节0x02.shellcode转换为asm格式0x03.通过64位传参机制把&("/bin/sh")传到rdi0x04.计算free的got地址和堆数组静态地址的距离0x05. 尝试写ex...原创 2020-03-18 13:06:51 · 676 阅读 · 0 评论 -
64位程序rop链构造|攻防世界pwn进阶区 pwn-100
文章目录前言利用思路0x01.ida调试发现sub_40063D函数可以溢出0x02.cyclic计算溢出需要填充72字节0x03.checksec看一下保护0x04.利用思路:0x05.可以用vmmap查找binary文件地址0x06.用 `ROPgadget --binary pwn100 --only "pop|ret" | grep rdi`命令寻找ROP0x07.32位程序和64位程序...原创 2020-03-16 20:22:58 · 4035 阅读 · 0 评论 -
攻防世界 pwn进阶区 pwn-200
前言一到夜晚就不太想睡…想了想还是把昨天(不,前天 )的那题pwn writeup写了吧。虚假の二进制选手终于捡起了他的pwn…话说从web新手区转到pwn进阶区,wtnl。学习要点DynELF的使用plt地址和got地址的区别如何利用write函数思考题目的逻辑不难,开启了NX防护(即不能直接执行栈上的数据,通常使用ROP,本题就是),没有给libc地址,有个明显的栈溢出漏...原创 2020-03-04 01:54:44 · 1724 阅读 · 1 评论 -
2019新生杯 pwn writeup
新生杯被吊打,大佬们tql…本来周五打完就应该写wp的,颓废了一个周末,周一晚上开始写。wp分开吧,每个方向一个wp(不是全栈!!!)其实pwn题目有点坑…前面的没学过二进制的web手也能做,后面两题做出来的人就很少(主要是我太菜了)五道pwn题在文末都有网盘链接**0x00 babyrip**IDA看一下主要函数int pwn(){ char v1; // [rsp+0h]...原创 2019-11-18 20:12:51 · 677 阅读 · 0 评论 -
Jarvis OJ --level4
level4与level1、2、3的区别在于:无system、无"/bin/sh"、无libc要点:使用DynELF函数leak system函数真实地址,然后用read函数写"/bin/sh\x00"到bss段,然后调用system("/bin/sh")去getshell。题目链接:level4.0f9cfa0b7bb6c0f9e030a5541b46e9f0先查看开了哪些保护:和l...原创 2019-11-11 00:11:18 · 248 阅读 · 0 评论 -
Jarvis OJ--level3
要点:通过read()的溢出构造rop链,获得write()函数的真实地址,再利用libc的偏移算出system和“/bin/sh”的地址,再次利用write()溢出,执行system,就能得到shell。添加链接描述flag:CTF{d85346df5770f56f69025bc3f5f1d3d0}...原创 2019-11-10 15:44:31 · 247 阅读 · 0 评论 -
Jarvis OJ level1
要点:使用shellcraft.i386()来编写shellcode和level0相比,本题没有system函数可以直接调用。所以我们要发送shellcode来getshell首先看一下开了哪些保护。(好吧,不出意料是全裸)然后IDA里面看函数调用,main()函数先调用了vulnerable_function函数。vulnerable_function:text:0804847B ...原创 2019-11-08 17:54:35 · 581 阅读 · 0 评论 -
Jarvis OJ level0
这学期好久没系统的学pwn了…忙着各种与安全无关的事。校CTF新生赛快开始了,准备复习一波,就从Jarvis OJ开始刷吧。level0这题很简单,主要是为了回顾下pwndbg里面cyclic工具的用法。...原创 2019-11-08 14:46:38 · 246 阅读 · 0 评论 -
Jarvis OJ --Smashes (SSP leak攻击)
1原创 2019-11-03 19:12:17 · 760 阅读 · 2 评论 -
每日一题pwnable.kr fd
题目描述:Mommy! what is a file descriptor in Linux?try to play the wargame your self but if you are ABSOLUTE beginner, follow this tutorial link:https://youtu.be/971eZhMHQQwssh fd@pwnable.kr -p2222 (p...原创 2019-08-23 17:52:47 · 258 阅读 · 0 评论 -
每日一题pwnable.kr collision
题目描述:Daddy told me about cool MD5 hash collision today.I wanna do something like that too!ssh col@pwnable.kr -p2222 (pw:guest)看到col.c#include <stdio.h>#include <string.h>unsigned l...原创 2019-08-24 14:42:46 · 331 阅读 · 0 评论 -
每日一题pwnable.kr bof
需要我们计算我们输入的位置到a1位置需要填充多少字节。然后再给a1赋值即可getshell疑问1.怎么确定输入的位置到a1的距离?我刚开始想这么干,直接用这个地址相减。但是不行,这题是覆盖变量。即从输入的地址覆盖到需要改变的变量处,然后给变量赋值,但不需要溢出。单击变量到栈内地址可以用这两个地址相减 +08-(-02c)=0x34,也可以看到ebp的距离。从当前输入位置到a...原创 2019-08-26 11:53:21 · 166 阅读 · 0 评论 -
每日一题 pwnable.kr flag
简单的UPX脱壳题算是第一次接触脱壳题用ida打开原文件,一看函数这么少,应该是存在压缩壳。通常压缩壳有两类用途,一种只是单纯用于压缩普通 PE 文件的压缩壳,而另一种则会对源文件进行较大变形,严重破坏 PE 文件头,经常用于压缩恶意程序。此处简单对比一下加密壳:加密壳或称保护壳,应用有多种防止代码逆向分析的技术,它最主要的功能是保护 PE 免受代码逆向分析。由于加密壳的主要目的不再是...原创 2019-08-26 18:53:26 · 2032 阅读 · 0 评论 -
每日一题 pwnable.kr passcode
连上去cat passcode.c#include <stdio.h> #include <stdlib.h> void login(){ ...原创 2019-08-27 21:14:21 · 177 阅读 · 0 评论 -
每日一题 pwnable.kr random
这题cat random.c发现是一个简单的伪随机数代码如下:#include <stdio.h>int main(){ unsigned int random; random = rand(); // random value! unsigned int key=0; scanf("%d", &am...原创 2019-08-28 22:30:52 · 267 阅读 · 1 评论 -
每日一题 pwnable.kr leg
leg.asm (gdb) disass main Dump of assembler code for function main: 0x00008d3c <+0>: push {r4, r11, lr} 0x00008d40 <+4>: add r11, sp, #8 0x00008d44 <+8>...原创 2019-09-03 09:01:26 · 308 阅读 · 0 评论 -
每日一题 pwnable.kr mistake
mistake.c#include <stdio.h>#include <fcntl.h>#define PW_LEN 10#define XORKEY 1void xor(char* s, int len){ int i; for(i=0; i<len; i++){ s[i] ^= XOR...原创 2019-09-03 12:26:16 · 150 阅读 · 0 评论 -
每日一题pwnable.kr shellshock
Bash远程执行漏洞“破壳”[注:bash版本要在4.1以下]bash引自维基百科的描述为:"bash,Unix shell的一种。1989年发布第一个正式版本,原先是计划用在GNU操作系统上,但能运行于大多数类Unix系统的操作系统之上,包括Linux与Mac OS X v10.4都将它作为默认shell。它也被移植到Microsoft Windows上的Cygwin与MinGW,或...原创 2019-09-04 12:09:00 · 381 阅读 · 0 评论 -
字节跳动 Misc betgame
我太难了…栈溢出都还没学会去做堆题,硬刚了几个小时,算了,先回来把这题的wp写了一道Misc题签到题,相当于猜拳游戏刚开始做的时候还卡了我挺长时间,准备暴力跑的话,理论上最多要试3^30次。然而试了几次发现,每次进入游戏,第一个只要输和它给的一样的,都是win。这说明这题其实不是随机的,然后多试几次找找规律。把它给的 jsb当做一个数组a[]={"j","s","b"}从第一个...原创 2019-09-08 18:12:22 · 406 阅读 · 0 评论 -
初识栈溢出及利用栈溢出的四种攻击方法
栈溢出本质: 混淆了用户输入与栈上的元数据产生原因: 用户输入的数据大小超过了程序预留的空间大小利用: 覆盖返回地址覆盖栈上的变量,例如函数指针或对象指针基本栈溢出漏洞实例:实际演示 stack_shellcode以python语言举例,运行报错。据我理解,在python中,函数调用一次,栈(stack)多加一层栈帧,由于栈帧的增加有上限,函数调用次数过多会导致栈溢出。(在c语...原创 2019-07-22 21:37:39 · 5802 阅读 · 2 评论