To do list

    pwnable 문제 만들기.

    보호되어 있는 글입니다.

    for "one" - rao

    보호되어 있는 글입니다.

    [dreamhack] basic_exploitation_003

    왜 4 byte의 더미가 필요한가? 왜 값이 순서대로 들어가지 않는가? https://wyv3rn.tistory.com/70 basic_exploitation_003 #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.. wyv3rn.tistory.com 2022-08-20 clear. 한동안 생각하지 못하고 있다가 다시 생각해서 해결함. 요약하면 %hhn != %1$hhn 이다. https://wyv3rn..

    plt와 got

    특정 함수를 실행시키고자할때 plt를 써야하나? got을 써야하나? libc로 로드된 함수 주소를 써야하나? 아니면 모두 상관 없나? 2022-07-22 clear got에 대한 이해가 부족했다. 정리해보자면 동적 링크, 정적링크부터 이해해야하는데, 차이라면 해당 함수가 프로그램에 포함되느냐 마느냐이다. 동적 할당은 프로그램에 포함되지 않고, 각 함수의 offset 만 기억하고 있으며, 정적할당은 프로그램에 포함되어버리는 것이다. 그래서 동적 할당 시 각 함수의 위치를 찾을 수 있는 명령어들이 해당 함수 call 시 포함된다. 이때 쓰이는 것이 plt와 got. plt는 got에 실제 함수의 위치를 넣어주는 역할을 하고 got는 실제 함수의 위치를 담고있는 역할을 한다. 이를 gdb로 확인해보면 우선 프..

    64bit system 함수 segmentation fault 오류

    system 함수로 익스플로잇 시 간혹 제대로 코드를 작성하였음에도 불구하고 segmentation fault 오류가 발생하는 경우가 있다. 1. 왜 그런지 알아보고 2. ret gadget 추가 시 왜 작동되는지 알아보자. 2022.07.19 당일 clear. 왜 그런지 알아보고 system 함수 내에 movaps 명령어가 있기 때문. movaps = mov aligned packed values이며 한번에 데이터를 다량으로 옮길때 사용되며 그 크기는 16 byte이다. 그래서 데이터들이 16byte로 묶을 수 있는가를 확인하기 때문이다. ret gadget 추가 시 왜 작동되는지 알아보자. movaps로 16 byte씩 묶인다고 가정했을때 seg. fault가 뜬다는 것은 8 byte의 남는 (또는 ..

    [Root-Me] ELF x86 - Stack buffer overflow basic6 : /bin/sh 주소 찾아 넣어서 실행해보기.

    2022.7.14 Clear! https://wyv3rn.tistory.com/30 ELF x86 - Stack buffer overflow basic 6 #include #include #include #include int main (int argc, char ** argv){ char message[20]; if (argc != 2){ printf ("Usage: %s \n", argv[0]); return -1; } setreuid(geteuid(), geteuid()); strcpy (messag.. wyv3rn.tistory.com https://wyv3rn.tistory.com/35 /bin/sh 문자열 주소 찾는 방법. 사실 /bin/sh 문자열만 찾는 것은 아니며 이를 활용해서 여러 함수..

    [Root-Me] ELF x86 - BSS buffer overflow : python 코딩해서 풀어보기.

    2022.7.14 Clear! 주 목적은 인자를 어떻게 넣어주며 코드를 실행하느냐였다. 많은 블로그에 executable, argv, 무조건 써야한다. executable에서 파일 경로는 무조건 절대경로! argv는 list 선언할때 argv=["" for i in range()] 와 같이 선언해놓고 뒤에 써야한다. 라고 그래서... 또 생각하니 빡치네... 결론만 이야기하면, process 내에 list 형식으로 들어가면 된다. 자세한건 https://wyv3rn.tistory.com/27 Python 3 + pwntools 자주 하는 실수 변수의 타입을 확실하게 구분하며 출력함에 따라 자꾸 헷갈린다 ㅠㅠ 자주 하는 실수를 정리했다. ssh 서버에 접속해서 특정 파일을 실행할 때 s = ssh(user..