본문 바로가기

분류 전체보기44

malloc_hook, free_hook offset 구하는 법(번외로 stdout도) $ gdb (gdb-peda) start (gdb-peda) print &__malloc_hook (gdb-peda) print &__free_hook (gdb-peda) vmmap libc vmmap libc하고 Start부분이 라이브러리 시작주소임 (gdb-peda)p/x - (gdb-peda)print &_IO_2_1_stdout_ 2022. 3. 7.
펌) One Gadget 설치 및 사용법 이거 걍 따른 블로그에도 있는 건데 다시 찾을 때 쉬우라고 내 블로그에 씀 > apt install ruby > gem install one_gadget > one_gadget /lib/x86_64-linux-gnu/libc.so.6 0x4f2c5 execve("/bin/sh", rsp+0x40, environ) constraints: rcx == NULL 0x4f322 execve("/bin/sh", rsp+0x40, environ) constraints: [rsp+0x40] == NULL 0x10a38c execve("/bin/sh", rsp+0x70, environ) constraints: [rsp+0x70] == NULL 2022. 3. 7.
rtl x86, rop x86 드림핵에는 64bit만 나와있어서 따로 찾아보게 됬고 이번에 배운 것에 대하여 쓸려고 한다 !위에 사진에 문제가 있네요 3번째 그림에서 맨 왼쪽 한칸이 없다고 생각해야합니다! bof가 터진다는 가정 하에 첫번째 그림처럼 덮어준다면 두번째 그림처럼 되게 된다 그 이유는 ret자리에 system함수의 주소를 덮어준다면 call을 통해 인자를 스택에 쌓고 호출하는 것이 아닌 RET의 POP EIP, JMP EIP를 통해 call없이 넘어가지만 함수에서는 당연히 call을 통해 인자를 스택에 쌓고 부른 줄 알고 PUSH EBP / MOV EBP, ESP가 실행되고 sfp(ebp)+8번 부터 인자를 가져올 것이기에 system함수가 호출된 후에 RET자리 가 될 곳에 dummy를 넣어준 후 인자(/bin/sh)을.. 2022. 2. 25.
서버의 라이브러리 버전 알아내는 법 포너블을 할 때 로컬에서 사용하는 lib랑 서버에서 사용하는 lib가 다를 때가 있다 이럴 때, 아무 함수나 주소를 구할 수 있다면 https://libc.blukat.me/ libc database search Query show all libs / start over libc.blukat.me 여기에 왼쪽에는 함수 이름, 왼쪽에는 하위 1.5바이트(끝 세자리)를 쓰면 무슨 lib를 사용하는지 알려준다 여기 말고도 여기 https://libc.rip/ 이것 말고 함수를 구하는 방법이 있는데 https://github.com/niklasb/libc-database GitHub - niklasb/libc-database: Build a database of libc offsets to simplify ex.. 2022. 2. 25.