for "one" - rao
·
To do list/Complete
보호되어 있는 글입니다.
[dreamhack] basic_exploitation_003
·
To do list/Complete
왜 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
·
To do list/Complete
특정 함수를 실행시키고자할때 plt를 써야하나? got을 써야하나? libc로 로드된 함수 주소를 써야하나? 아니면 모두 상관 없나? 2022-07-22 clear got에 대한 이해가 부족했다. 정리해보자면 동적 링크, 정적링크부터 이해해야하는데, 차이라면 해당 함수가 프로그램에 포함되느냐 마느냐이다. 동적 할당은 프로그램에 포함되지 않고, 각 함수의 offset 만 기억하고 있으며, 정적할당은 프로그램에 포함되어버리는 것이다. 그래서 동적 할당 시 각 함수의 위치를 찾을 수 있는 명령어들이 해당 함수 call 시 포함된다. 이때 쓰이는 것이 plt와 got. plt는 got에 실제 함수의 위치를 넣어주는 역할을 하고 got는 실제 함수의 위치를 담고있는 역할을 한다. 이를 gdb로 확인해보면 우선 프..
64bit system 함수 segmentation fault 오류
·
To do list/Complete
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 주소 찾아 넣어서 실행해보기.
·
To do list/Complete
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 코딩해서 풀어보기.
·
To do list/Complete
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..