본문 바로가기

전체 글

(186)
쉘코드 팁 보호되어 있는 글입니다.
task 보호되어 있는 글입니다.
Heap 02 / Bins 보호되어 있는 글입니다.
Heap 01/ chunk 보호되어 있는 글입니다.
bof + rop 보호되어 있는 글입니다.
pwnable.xyz/GrownUp strcpy의 마지막에 추가되는 널바이트와 fsb를 사용하여 푸는 문제였습니다 buf에 0x10 크기의 데이터를 넣을 수 있고 src에 0x80크기에 데이터를 넣고 usr에 strcpy로 저장한 뒤 이를 printf로 출력하여 줍니다 해당 buf에 오직 1byte만을 가지고 검사가 이루어지기 때문에 그 이후로의 원하는 데이터를 스택에 밀어넣을 수 있다 0x80만큼의 데이터가 저장될 usr 영역을 보면 printf의 rdi에 저장되는 서식문자의 주소가 저장되어 있는 것을 확인할 수 있습니다 usr에 0x80만큼 데이터를 넣는다면 qword_601160에 저장된 첫 1바이트가 널이 되면서 usr+0x20의 위치가 rdi에 들어가게 되면서 fsb가 발생할 수 있습니다 from pwn import * p = r..
babyfsb fsb를 애매하게 이해한 것 같아 hackCTF의 babyfsb문제를 푸는데 대체 무슨 기준으로 leak이 되는지.. 등 기초가 많이 부실했구나 느끼게 해 준 문제였습니다 babyfsb write up도 쓸겸 부족한 부분을 정리해볼까 합니다 FSB는 주로 printf함수에서 발생하는 버그인데 포맷 스트링 즉 서식 문자를 잘못 사용하였을 때 생기는 게 됩니다 x64에서는 rdi -> rsi -> rdx -> rcx -> r8 -> r9 -> stack 순으로 인자가 저장됩니다 위의 그림을 참고해서 생각해보면 rdi레지스터에 서식 문자를 지정하여 주고 지정된 서식 문자는 다음의 인자들을 서식 문자에 맞게 출력해주게 됩니다 #include int main(){ printf("%lx\n%lx\n%lx\n%lx\..
IO_FILE 보호되어 있는 글입니다.