Glibc 2.29 下新安全机制及漏洞利用

在Glibc2.29中增加了几个新的安全机制,我呢就参考了其他一些师傅的文章学习了一番,并作如下记录

我只是重新走一遍师傅们的路,叙述如有错误还请斧正

unlink(null-by-one)

###GLIBC 2.23###
/* consolidate backward */
if (!prev_inuse(p)) {
    prevsize = p->prev_size;
    size += prevsize;
    p = chunk_at_offset(p, -((long) prevsize));
    unlink(av, p, bck, fwd);
}


###GLIBC2.29###
/* consolidate backward */
if (!prev_inuse(p)) {
    prevsize = prev_size (p);
    size += prevsize;
    p = chunk_at_offset(p, -((long) prevsize));
    if (__glibc_unlikely (chunksize(p) != prevsize))
        malloc_printerr ("corrupted size vs. prev_size while consolidating");
    unlink_chunk (av, p);
}

如上所示代码,在backward consolidate的时候检查了size!=prev_size。

Continue reading Glibc 2.29 下新安全机制及漏洞利用

BUUCTF PWN WRITEUP Part7

护网杯_2018_gettingstart

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

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

Continue reading BUUCTF PWN WRITEUP Part7

GKCTF2020部分PWN&&WEB题解

最近事情有点多,没办法按时打,只能赛后复现一下看看,但是很可惜,初步看只出了三个WEB一个PWN。

WEB

CheckIN

构造方法执行了eval(),参数是用户通过REQUEST提交的Ginkgo经过base64_decode处理后的数据,一开始尝试phpinfo()总是不成功,所以本地运行把@去掉看了一下:

Continue reading GKCTF2020部分PWN&&WEB题解

BUUCTF PWN WRITEUP Part6

wustctf2020_number_game

整数溢出,我们知道int型的取值范围是[-2147483648,2147483647],那我们输入2147483648应该会变成-2147483648,对应地,输入2147483649变成-2147483647

Continue reading BUUCTF PWN WRITEUP Part6