自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(27)
  • 收藏
  • 关注

原创 博客搬家了

博客搬家咯搬去简书了,溜了溜了

2018-05-09 17:16:12 230

原创 查看系统调用号

在linux 查看32位的系统调用号cat /usr/include/asm/unistd_32.h 查看64位的系统调用号cat /usr/include/asm/unistd_64.h

2018-04-27 16:42:13 3017

原创 怎么在linux切换不同版本的python

最近因为装pwndbg遇到了点问题,发现有些python库导入不了 查了下才发现pwndbg需要python版本为3.5 可是我做pwn题要用的pwntools是用python2的 所以我就查了一下怎么在linux下共存不同的python版本 发现了一个神器pyenv github 用这个工具可以很容易控制环境中的python版本安装:cd ~git clone git://...

2018-04-26 15:17:09 851

原创 rsbo-1和rsbo-2的writeup

rsdo和rsdo-2writeup这两道题的文件是一样的,不过一个没要求getshell,一个要求getshll先说rsdo 防护机制 只开启了堆栈不可执行 题目hint: ROP, open, read 很明显要要用ROP调用执行open()函数打开flag文件 然后用read()函数读取文件 ida反编译代码 **它先执行init函数 ,打开“/home/ct...

2018-04-22 22:25:56 460

转载 32位下利用_dl_runtim_resolve函数

利用_dl_runtime_resolve来解析特定的函数这里以这里以XDCTF 2015的pwn200为例 基础前置知识请看这篇文章_dl_runtime_resolve利用的步骤主要有5步控制程序的栈转移到我们可以控制的地址控制程序调用_dl_runtime_resolve函数 ,控制reloc_offset的大小,使reloc项落在我们控制的栈上伪造reloc项中的内...

2018-04-19 21:24:12 529

原创 Return-to-dl-resolve

前置知识:ELF可执行文件由ELF头部,程序头部和其对应的段,节头部表和其对应的节组成。ELF文件结构如果想深入了解的话可以看下《程序员的自我修养》的第三章 P70如果一个可执行文件要进行动态链接,它的程序头部表将包含类型为PT_DYNAMIC的段,它包含.dynamic节结构如下typedef struct { Elf32_Sword d_tag; union { ...

2018-04-19 20:25:40 461

原创 HITCON-Training-master lab5 wp

程序防护机制:开启了NX堆栈不可执行查看了下ida反编译的代码可以发现主函数十分简单,但是程序里却又十分多的函数,说明这是静态链接编译的程序要求输入一局话,可以发现在read函数处有明显的栈溢出漏洞,buf大小是20 ,但是read函数读取100个字节的数据我一开始是想直接用ROPgadget生成ropchain的,但是尝试过发现,它可以溢出的空间不足以放下ROPgadget生成的ropchain...

2018-04-07 21:17:55 358

原创 pwn --栈迁移

栈迁移主要是为了解决栈溢出可以溢出空间大小不足的问题栈迁移的实现:通过将ebp覆盖成我们构造的fake_ebp ,然后利用leave_ret这个gadget将esp劫持到fake_ebp的地址上leave_ret相当于:mov %ebp,%esppop %ebppop %eip接下来拿HITCON-Training-master 的 lab6做例子题目链接:https://github.com...

2018-04-07 15:22:01 6936 5

原创 做pwn题时的一些调试技巧

当你觉得你的脚本没有问题,但是却又怎么也出你想要的结果时,你就需要用到调试了一个是设置context.log_level="debug"脚本在执行时就会输出debug的信息,你可以通过观察这些信息查找哪步出错了而另一个就是 用pwnlib.gdb.attach(p)在发送payload前加入这条语句,同时加上pause() 时脚本暂停然后就会弹出来一个开启着gdb的终端,你先在gdb中设置好断点然...

2018-04-06 16:13:43 4882 2

原创 一些汇编的知识顺便填上 通用gadget_libc_csu_init的坑

我写这篇博客主要是因为某人对我发起的灵魂拷问为什么level5利用_libc_csu_init 的gadget构造的payload要在末尾加上0x38个填充字符我听到这个问题是很蒙蔽的,我当时想当然的讲是用来维持栈平衡的,然rsp的值变成初始状态,可是经过一番深刻的讨论发现,不是这样子的,然后那个diaomao 就出去浪了,留我一个人思考这个问题首先这个问题需要有一定的汇编基础:(因为这道题是64...

2018-04-06 15:57:59 1294 2

原创 数组下标越界

原理:因为c语言不会检测数组下标,所以如果我们给数组一个超出它大小的下标,就会照成数组越界。如果是想数组中写入数据的话,就会造成数据写入到不属于数组的地方,或者说如果读取数据的话,就会读取到别的地方的数据。因为数组地址是自低往高增长,而栈的地址是自高向下降低,所以如果我们将数组下标根据栈内的空间的分布,设置为特定的值,就可以修改或者是查看我们想要查看的地址的值。比如将返回地址设置成我们想要调用函数...

2018-04-05 20:41:38 2298

原创 HITCON-Training-master lab2 wp

查看了下防护机制发现开启了Canary,但是没关系,它没开启堆栈不可执行,说明 这是一道shell code题简单跑了一下程序,发现输出了一句话:give me you shellcodeida反编译查看了下代码代码逻辑也很简单,你输入一段shellcode,然后去执行它我随便去网上找了一段shellcode,输入后发现不行,说明它不是单纯的让我们输入shellcode查看了一下orw_secco...

2018-04-03 20:06:22 651

原创 smash-the-stack wp

题目提示:stderr is available, beware of the output拿到题目惯例检查下防护机制:发下开启了NX和Canary 两个防护机制结合题目给的提示 ,可以大胆的猜测这是一个smashesattck通过Canary 的防护机制泄露信息ida反编译观察程序逻辑发现它打开了flag文件,所以我们可以将程序的argv[0]覆盖成flag地址来输出flag原理:程序开启了Ca...

2018-04-02 13:46:07 364

转载 中断 int 0x80 的作用

 当进程执行系统调用时,先调用系统调用库中定义某个函数,该函数通常被展开成前面提到的_syscallN的形式通过INT 0x80来陷入核心,其参数也将被通过寄存器传往核心。 在这一部分,我们将介绍INT 0x80的处理函数system_call。 思考一下就会发现,在调用前和调用后执行态完全不相同:前者是在用户栈上执行用户态程序,后者在核心栈上执行核心态代码。那么,为了保证在核心内部执行完系统调用...

2018-04-02 12:19:26 8161

原创 rop and rop2 wp

题目来源:国外的一个ctf平台https://hackme.inndy.tw/ rop题目提示:ROP buffer overflow 很明显是一个栈溢出 要用rop来获取shell防护机制发现至开启了NX 拖到IDA反编译一下 可以看到有很多函数 ,不管是用到的还是没用的都有,说明它的是静态连接我们可以通过ROPgadget 来直接构造ropchain命令为 ROPgadget --binary...

2018-04-02 12:18:27 507

原创 通用gadget_libc_csu_init的使用

蒸米 栈溢出的x64位 level5 wp=================_libc_csu_init函数是程序调用libc库用来对程序进行初始化的函数,一般先于main函数执行而我们则是要利用_libc_csu_init其中两端特殊的gadgetgadget 位于 0x400600 和 0x40061a地址先借用0x40061a 处的gadget 将想要压入寄存器的参数压入顺序依次 rbx r...

2018-03-30 16:30:40 3396

转载 python 处理字符串的方法

findfind方法可以在一个较长的字符串中查找子字符串。它返回子串所在位置的最左端索引。如果没有找到则返回-1。>>> a = 'test'>>> a.find('s')2>>> find方法其实和列表取步长的方法联用来截取某段需要的字符串。>>> a = 'hello world'>>&gt

2018-03-29 18:31:04 1541 1

原创 stack smahes

程序开启了Canary 保护 ,如果读取的buffer覆盖了相应的canary值 就会报错 ,调用__stack_chk_fail 来打印错误 ,我们不关心这报错 ,但是我们可以利用这个函数来打印我们想输出的内容void __attribute__ ((noreturn)) __stack_chk_fail (void){  __fortify_fail ("stack smashing dete...

2018-03-27 21:46:31 160

原创 pwn gdb 常用命令

gdb 常用命令=======r 执行程序至断点c 继续执行程序s 单步执行n 单步执行 如果使调用函数 则进入函数内部x 查看指定地址的内存地址的值  x/(n,f,u为可选参数) n为需要显示的内存单元个数  f为显示格式:               x(hex) 按十六进制格式显示变量。               d(decimal) 按十进制格式显示变量。               ...

2018-03-27 09:00:20 4722 1

原创 jarvisoj pwn level5 wp

题目要求练习 mmap和mprotect 函数 不能调用system或者是execv函数来获取shell同时给了可执行文件和libc文件先查了下mmap和mprotect函数是干什么的两个函数原型如下:void* mmap(void* addr, size_t len, int port, int flag, int filedes, off_t off)#mmap(rdi=shellcode_a...

2018-03-26 20:57:17 1942 4

转载 利用puts函数泄露libc内存信息

puts函数puts的原型是puts(addr),即将addr作为起始地址输出字符串,直到遇到“x00”字符为止。也就是说,puts函数输出的数据长度是不受控的,只要我们输出的信息中包含x00截断符,输出就会终止,且会自动将“n”追加到输出字符串的末尾,这是puts函数的缺点,而优点就是需要的参数少,只有1个,无论在x86还是x64环境下,都容易调用。为了克服输入不受控这一缺点,我们考虑利用put...

2018-03-22 21:58:04 2995

转载 linux的防护机制

1、NX/DEP:堆栈不可执行 ,将数据所在的内存页标识为不可执行,当程序试图在数据页面执行指令时,cpu就会抛出异常绕过方法:ROP ret2libc关闭NX:gcc -z execstack -o pwn pwn.c2、Cannry:(栈保护)当启用栈保护后,函数开始执行的时候会先往栈里插入cookie信息,当函数真正返回的时候会验证cookie信息是否合法,如果不合法就停止程序运行。攻击者在...

2018-03-22 20:36:00 1214

转载 pwn题目的搭建

关闭NX:gcc -z execstack -o pwn pwn.c关闭程序的canary:gcc -fno-stack-protector -o pwn pwn.c如何关闭程序的aslr: gcc -no-pie pwn pwn.c关闭整个linux的aslr保护:sudo -s echo o > /proc/sys/kernel/randomize_va_space挂载pwn题到端口 :...

2018-03-22 20:33:50 1520

原创 通过给的libc泄露函数地址

libc中的函数相对于libc的基地址的偏移都是确定的,如果有一道题给你了libc的文件,就可以通过libc文件泄露出system函数和binsh的地址,然后再构造payload。一般通过write()函数泄露 ,通过ELF获得write函数在got表和plt表中的地址同时获得程序start地址 构造payload payload 一般是填充字符(栈的大小)+ ‘aaaa’(覆盖EBP)+  p3...

2018-03-22 20:31:37 5435

原创 GOT表覆写技术

GOT表:概念:每一个外部定义的符号在全局偏移表(Global offset Table)中有相应的条目,GOT位于ELF的数据段中,叫做GOT段。作用:把位置无关的地址计算重定位到一个绝对地址。程序首次调用某个库函数时,运行时连接编辑器(rtld)找到相应的符号,并将它重定位到GOT之后每次调用这个函数都会将控制权直接转向那个位置,而不再调用rtld。PLT表:过程连接表(Procedure L...

2018-03-22 20:30:41 4579

转载 linux core dump

core dump:(内存快照)在linux中当程序发生异常中止或者崩溃时,操作系统会将程序当时的内存状况记录下来,存放到一个文件中,这中行为就叫core dump.core dump不仅保存了程序当时的内存状况,还有关键的程序运行的状态 ,寄存器信息(包括程序指针、栈指针等)、内存管理信息、其他处理器和操作系统状态和信息。core dump产生的时机:Linux 中信号是一种异步事件处理的机制,...

2018-03-22 20:29:28 253

原创 PWN-无libc泄露

pwn题的无libc泄露用到的pwntools的DynELF模块实现条件是:有指向libc空间的 能泄露libc空间信息的函数 (write和puts函数)能重复触发漏洞DynELF模块的基本框架:p=process('./xxx')def leak(address):    payload='xxx'+address+'xxx'  #address就是你要泄露的地址 ,payload是你控制程序...

2018-03-22 20:27:35 3645

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除