BUUCTF PWN WRITEUP Part7

护网杯_2018_gettingstart

也算是比较经典的一个pwn了,考察了浮点数在内存中的存储方式:

不难猜出是栈上的变量覆盖,难点在于浮点数转换,这里不赘述,有兴趣可以自己上网查查资料。

Continue reading BUUCTF PWN WRITEUP Part7

第三届蓝帽杯WEB&&PWN题解

一直想写一下但是没时间没机会,不一定全面,如有遗漏请师傅们斧正。

PWN

pwn

    Arch:     amd64-64-little
    RELRO:    Partial RELRO
    Stack:    No canary found
    NX:       NX enabled
    PIE:      No PIE (0x400000)

格式化字符串&&栈溢出

漏洞存在于get_name分支中。

This image has an empty alt attribute; its file name is image-107.png
Continue reading 第三届蓝帽杯WEB&&PWN题解

2020网鼎杯部分WEB&&PWN题解

今年网鼎杯不说啥了,没打进前130,我是菜B比不过各位师傅

本文包括四场网鼎的部分WEB和PWN,本着菜鸡应该多练习的原则四场都看了看,除第一场外均为复现。

青龙组

PWN-boom1

Continue reading 2020网鼎杯部分WEB&&PWN题解

不在栈上的格式化字符串利用

How to use

当格式化字符串不在栈上而是在堆或bss段上的时候,传统的攻击方式就失效了。

可以将要写的内存写入栈中某个地址(相当于构造了跳板,二级指针)。

参数位置计算

linux下32位程序是栈传参,从左到右参数顺序为$esp+4,$esp+8,...;因此$esp+x的位置应该是格式化第x/4个参数。
linux下64位程序是寄存器加栈传参,从左到右参数顺序为$rdi,$rsi,$rdx,$rcx,$r8,$r9,$rsp+8,...;因此$rsp+x的位置应该是格式化第x/8+6个参数。

常用的格式化字符

用于地址泄露的格式化字符有:%x、%s、%p等;
用于地址写的格式化字符:%hhn(写入一字节),%hn(写入两字节),%n(32位写四字节,64位写8字节);
%< number>$type:直接作用第number个位置的参数,如:%7$x读第7个位置参数值,%7$n对第7个参数位置进行写。
%<number>c:输出number个字符,配合%n进行任意地址写,例如"%{}c%{}$hhn".format(address,offset)就是向offset0参数指向的地址最低位写成address

Continue reading 不在栈上的格式化字符串利用