#본 포스팅은 글쓴이가 까먹었을때 다시 보기 위함으로 텍스트로 정리함 fake ebp 기법을 알려면 먼저 스택의 이해와 leave-ret 명령어의 이해가 필수적이다 1. 먼저 sfp와 ret를 overwrite할수 있는 취약점을 탐색 2. leave-ret GadGet의 주소를 알고 3. payload를 작성 Payload = shellcode 시작주소(buf+4) + shellcode + nop(버퍼의 크기 - shellcode) + &(buf+4) + leave-ret GadGet ================================================ leave-mov esp ebp-pop ebp ret-pop eip-jmp eip esp, ebp 레지를 중심으로 정리하면 leave ..
보안 스터디/system
window -> ubuntu - rz ubuntu -> window -sz [filename]
까먹으면 다시 볼라구 basic한 bof기법 몇가지를 정리해두려 한다 먼저 bof란 buffer overflow의 약자로 가장 먼저 떠오르는 것은 stack bof이다 stack 메모리 공간에서 정해진 메모리 양보다 input양이 더 많을 때 넘치는 취약점을 말하는데, 이해하려면 당연히 stack 구조의 이해가 먼저 필요하다. stack 의 구조는 아래와 같다[출처] http://bob3rdnewbie.tistory.com/187 만약 buf의 크기가 40byte이면 40보다 더 많은 양인 44byte를 넣어서 4byte를 overflow 시키는 것이다. 기본적으로 ret주소를 /bin/sh 또는 삽입한 쉘코드의 시작주소로 조작할 수 있다 취약한 함수로는 strcpy, gets 함수 등 입력 수 제한이 ..
리눅스 환경에서 디버깅을 돕는 peda를 설치했다 간단한 사용법으로 #pdisas func_name 디스어셈블해준다 gdb랑 다르게 색이 있어서 보기좋다 #checksec 보호기법 체크 내장 # bp를 걸고 돌려보면 gdb와 또 다른게 레지스터들에 들어있는 값이 바로바로 보인다 이게 정말 편하다 #find 명령어 말그대로 찾아준다 개꿀이다
#압축 tar [option][filename][make filename]Ex) tar cvf condense.tar condense #풀기 tar [option][filename]Ex) tar xvf condense.tar
뜬금없지만 침해사고대응시 우분투 os환경에서 기본적인 정보수집에 필요한 명령어를 끄적어보려한다 먼저 system os정보를 수집-cat /etc/*release 현재 사용중인 ip확인 및 수집-ifconfig 네트워크 netstate 필요하다면 사용중인 네트워크 설정 변경/usr/sbin/netconfig 일단 관리자 권한을 갖고 있다고 가정했을때,보통 로그파일들은 var/log 디렉토리에 담겨있다 #var/log-lastlog : /etc/passwd에 등록되어있는 사용자들의 최근 로그인정보와 ip-wtmp : 사용자의 로그인,로그아웃 시간을 기록(last 명령어로 정보출력 가능)-messages : 시스템의 전반적인 메세지를 기록하는 로그파일-secure : 개인인증을 기록하는 로그파일 /root/...
list(l) ~소스내용 10줄 출력 run(r)프로그램 실행 kill(k)프로그램 종료 breakpoint(b) *~bp설정 continue(c)bp에 걸린 프로그램 계속진행 clear(cl) ~설정한 bp 삭제 info(i) ~알고싶은 정보를 출력 ex.)reg, bp 등등 step(s) ~현재 행을 실행, 함수 내부로 들어감 next(n) ~현재 행을 실행, 함수 내부로 x #출력 형식x/~x ~바이트를 16진수로 출력x/~s ~바이트를 문자열로 출력t : 2진수o : 8진수d/u : 부호가 있는/없는 10진수
32bit 컴파일-m32 스택에 더미값을 없애고 ebp를 기준으로-mpreferred-stack-boundary=2 canary 삭제-fno-stack-protector