avatar

CTF-Pwn-2.27版本unsorted_bin_libc_leak若干方法

CTF-Pwn-2.27版本unsorted_bin_libc_leak若干方法

1、存在UAF漏洞,直接多次free,从而达到libc leak

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(){
setbuf(stdin,0);
setbuf(stdout,0);
setbuf(stderr,0);
int i = 0;
unsigned long * ptr = malloc(0x91);
malloc(0x18);
for(i = 0;i<7;i++)
free(ptr);
free(ptr);
printf("pid = %d\n",getpid());
printf("fd = %p\n",ptr[0]);
getchar();
return 0;
}

2、free一个大堆块(大于0x420的堆块)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
int main(){
setbuf(stdin,0);
setbuf(stdout,0);
printf("pid = %d\n",getpid());
long long * ptr = malloc(0x420);
malloc(0x20);
printf("tcache address:%p\n",(long long)ptr);
free(ptr);
getchar();
return 0;
}

[变式]3、若存在UAF和double free,可以使用tcache攻击修改可控制堆块的size,然后free8次被修改size的堆块,即可libc leak

文章作者: 咲夜南梦
文章链接: http://yoursite.com/2019/08/13/CTF-Pwn-2.27%E7%89%88%E6%9C%ACunsorted_bin_libc_leak%E8%8B%A5%E5%B9%B2%E6%96%B9%E6%B3%95/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 咲夜南梦's 博客
打赏
  • 微信
    微信
  • 支付宝
    支付宝

评论