-
-
[分享]pwnable.kr bof day3
-
发表于:
2021-1-4 22:43
9618
-
bof.c 源码如下
我们的目标是执行 system("/bin/sh");
需令 key == 0xcafebabe,key 的初始值为 0xdeadbeef
已知 overflowme 是一个局部数组变量,长度为 32,且通过 gets 获取,没有边界检查,所以可以考虑在执行 gets(overflowme); 把 key 的值覆盖为 0xcafebabe
与源码对照着看
a1 即 key,地址在 ebp + 8h 处
s 即 overflowme[32]; 首地址在 ebp - 2C 处
所以 s 填充 2Ch + 8h = 34h = 52 个字符后,可以覆盖 key 值
注 cat - 是为了与 shell 保持连接
void func(
int
key){
char overflowme[
32
];
printf(
"overflow me : "
);
gets(overflowme);
/
/
smash me!
if
(key
=
=
0xcafebabe
){
system(
"/bin/sh"
);
}
else
{
printf(
"Nah..\n"
);
}
}
int
main(
int
argc, char
*
argv[]){
func(
0xdeadbeef
);
return
0
;
}
void func(
int
key){
char overflowme[
32
];
printf(
"overflow me : "
);
gets(overflowme);
/
/
smash me!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课