1. 문제
#include <stdio.h>
#include <unistd.h>
#include <string.h>
void vuln(char src[]){
char buf[50];
strcpy(buf, src);
printf("buf_addr : %p\n", buf);
}
void main(){
char src[100];
printf("Do you know Return to Shellcode?\n");
printf("Enter Please :)\n");
read(0, src, 100);
vuln(src);
}
다음과 같이 빌드해줍니다.
gcc -o problem problem.c -fno-stack-protector -fno-pie -z execstack -mpreferred-stack-boundary=2 -m32
2. HINT
segmentation 오류가 발생하는 경우 -> ASLR을 끄고 실습해보기
쉘에서와 gdb 상에서 buf의 주소가 다른 경우 -> 아래 블로그를 참고해서 특정 환경변수를 사용하지 않도록 설정 or nop을 줘서 풀어도 된다.
특정 쉘코드가 안 먹힐 경우 -> 다른 길이 쉘코드 갖다 써보기
셸에서 실행할때와 gdb에서 실행할 때 주소가 달라지는 문제
프로그램의 스택 시작 주소를 출력하는 간단한 코드이다. 위 코드를 컴파일 후 실행하면 0xbffff0c8 주소가 출력 된다. 하지만 같은 프로그램을 gdb에서 실행시키면?? 그림에서 보이는 것 처럼 0xbfff
huammmm1.tistory.com
'Hacking > Pwnable' 카테고리의 다른 글
[P4C] Pwnable problem 2 - writeup (0) | 2021.04.10 |
---|---|
[P4C] Pwnable problem 2 (0) | 2021.04.10 |
[Pwnable] python으로 인자 및 stdin 전달 (0) | 2021.04.01 |
[Pwnable] Lazenca - ROP(x64) 정리 (0) | 2021.03.30 |
[Pwnable] Lazenca - ROP(x86) 정리 (0) | 2021.03.29 |