목록전체 글 (361)
보호되어 있는 글입니다.
1. ASLR 주소 공간 배열 무작위 ASLR은 데이터 영역만 무작위화 시킨다. 데이터 영역은 stack, heap, library가 있음 (바이너리 영역 무작위화는 PIE이다.) ASLR 끄기 터미널에서 해야 함 echo 0 > /proc/sys/kernel/randomize_va_space 2. Canary SFP바로 위에 랜덤 데이터가 생겨 변조되면 경고 발생함 SFP와 RET 접근을 어렵게 함 컴파일 옵션 -fno-stack-protector : canary를 끔 ***Stack Smashing Detected*** 3. PIE 바이너리 주소가 랜덤화 된다. 바이너리 주소가 offset을 가지고 있다. 실행 시 바뀐다. 컴파일 옵션 -fPIE -pie : PIE 끄기 4. NX stack, hea..
보호되어 있는 글입니다.
보호되어 있는 글입니다.
FSB문제 쉘 주소 만들고 획득 .dtors주소는 main이 끝나고 실행되는 소멸자이다. .dtors주소에 쉘 주소를 넣는다. main이 끝난 후 쉘이 실행될 것이다. objdump -s -j .dtors attackme .dtors주소를 구한다. destructor주소는 4byte 더해야 한다. 즉 0x8049598 포맷 스트링을 보내면 주소 값이 나온다 12byte 떨어진 곳에 입력했던 AAAA가 있다. 환경변수 쉘 : 0xbffffefe .dtors : 0x8049598 0xfefe(65278)-출력값(40) = 65238 0x1bfff – 0xfefe = 49409 출력 값 : 4 + 4 + 4 + 4 + 8*3 = 40 (python –c ‘print “\x90”*4 + “\x98\x95\x04..
코드에 setreuid가 없다. buf : [ebp-40] dummy(44) + ret(4) setreuid가 들어간 shellcode로 환경변수를 만들어 준다. 그 후 주소를 구해서 넣어준다. password : we are just regular guys
변수 선언 부분 fflush(stdout) : 버퍼에 저장된 내용을 출력하는 함수 count가 100 이상이면 뭐하는 중이냐고 물어봄 check가 0xdeadbeef 이면 shellout 함수 실행 버퍼에 있는 값을 한바이트씩 가져옴 0x08이면 count가 감소함 default는 string 배열에 x값을 넣고 count를 증가시킨다. check : [ebp-104] string : [ebp-100] count가 감소하는 것을 이용하여 string [-4]로 check영역에 접근을 한다. 즉 0x08을 4개 넣어 주고 0xdeadbeef를 넣어 준다. password : swimming in pink