ssp_000
·
Wargame/Dreamhack
보호되어 있는 글입니다.
basic_rop_x86
·
Wargame/Dreamhack
#include #include #include #include void alarm_handler() { puts("TIME OUT"); exit(-1); } void initialize() { setvbuf(stdin, NULL, _IONBF, 0); setvbuf(stdout, NULL, _IONBF, 0); signal(SIGALRM, alarm_handler); alarm(30); } int main(int argc, char *argv[]) { char buf[0x40] = {}; initialize(); read(0, buf, 0x400); write(1, buf, sizeof(buf)); return 0; } 32bit rop 문제이다. 앞선 문제에서 설명한 것과 같이 64 bit와의 차이는..
plt와 got
·
To do list/Complete
특정 함수를 실행시키고자할때 plt를 써야하나? got을 써야하나? libc로 로드된 함수 주소를 써야하나? 아니면 모두 상관 없나? 2022-07-22 clear got에 대한 이해가 부족했다. 정리해보자면 동적 링크, 정적링크부터 이해해야하는데, 차이라면 해당 함수가 프로그램에 포함되느냐 마느냐이다. 동적 할당은 프로그램에 포함되지 않고, 각 함수의 offset 만 기억하고 있으며, 정적할당은 프로그램에 포함되어버리는 것이다. 그래서 동적 할당 시 각 함수의 위치를 찾을 수 있는 명령어들이 해당 함수 call 시 포함된다. 이때 쓰이는 것이 plt와 got. plt는 got에 실제 함수의 위치를 넣어주는 역할을 하고 got는 실제 함수의 위치를 담고있는 역할을 한다. 이를 gdb로 확인해보면 우선 프..