本次我主要负责PWN,因为交flag需要验证码所以也没时间看WEB,失分原因就是容易DOWN,不过队友的WEB还是很不错的

本次我主要负责PWN,因为交flag需要验证码所以也没时间看WEB,失分原因就是容易DOWN,不过队友的WEB还是很不错的
在Glibc2.29中增加了几个新的安全机制,我呢就参考了其他一些师傅的文章学习了一番,并作如下记录
我只是重新走一遍师傅们的路,叙述如有错误还请斧正
###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 下新安全机制及漏洞利用也算是比较经典的一个pwn了,考察了浮点数在内存中的存储方式:
不难猜出是栈上的变量覆盖,难点在于浮点数转换,这里不赘述,有兴趣可以自己上网查查资料。
最近事情有点多,没办法按时打,只能赛后复现一下看看,但是很可惜,初步看只出了三个WEB一个PWN。
构造方法执行了eval(),参数是用户通过REQUEST提交的Ginkgo经过base64_decode处理后的数据,一开始尝试phpinfo()总是不成功,所以本地运行把@去掉看了一下:
Continue reading GKCTF2020部分PWN&&WEB题解整数溢出,我们知道int型的取值范围是[-2147483648,2147483647],那我们输入2147483648应该会变成-2147483648,对应地,输入2147483649变成-2147483647
Continue reading BUUCTF PWN WRITEUP Part6