반응형

전체 글 276

19일차. patternOffset을 이용한 리턴 값 확인.

root@bt:~/test# nmap -sS -f 192.168.17.150 -p 1000-2000 1472/tcp open csdm cdsm C:\Windows\System32\drivers\etc\services 포트정보가 저장되있다root@bt:~/test# nc 192.168.17.150 1472 hello server : hi, Client hello //그대로 돌려주는건 저장하는 것. buffer가 있다. buffer flow로 공격가능하다.스택에 리턴주소가 저장된다. root@bt:~/test# cd /pentest/exploits/framework2/sdk/ root@bt:/pentest/exploits/framework2/sdk# ./patternOffset.pl 69423169 3000..

카테고리 없음 2013.05.03

18일차 리버싱, std

Win7 : ntdll.jmp esp : 7799BFE4 WinXP : ntdll.jmp esp : 7C971EED mov byte [edx+1F3], 0 500번쨰에 null 문자를 넣는다. 배열이기에 1F4를 1F3으로 해서 마지막에 0을 넣는다. mov byte [edx+1F3], 0 push EDX call 401000 jmp 4011F9------------ jmp 00404D8BESP (EBP-176c)에서 빼기 7DHOTPIX == 개발자가 오기전까지 확인memcpy라는 함수는 길이를 재기에 실제 길이 재는 함수 strlen을쓰는게 낫다. if(strlen(str) > 500 ){ buf[499]=\0 }  Function Calling Convention 함수 호출에 관한 규약(약속) ..

리버싱 2013.05.01

__cdecl, __pascal, __stdcall의 차이점

함수호출 방식이 __cdecl, __pascal, __stdcall로 여러 가지가 있는 이유는 윈도우즈의 역사성에 있다. 우선 win16에서는 실행파일의 크기가 줄어들고 속도가 빠르다는 이유로 pascall 방식을 사용 했고 win32에서는 가변매개인자를 지원하는 함수를 제외한 모든 함수들은 __stdcall을 사용 한다. 만약 c 방식의 함수호출을 원한다면 __cdecl을 명시해 주어야 한다.(윈도우즈 프로그래밍에 있어서) 우선 c 방식의 함수 호출과 pascal 방식의 함수호출의 차이점을 알아보자. 첫 번째로 함수호출후 종료 시점에 호출한 함수의 스택을 정리하는 주체가 호출한 함수이냐 아니면 호출당한 함수이냐의 차이이다. 두 번째는 매개인자를 스택에 넣는 방향에 따라 나눈다. 즉, 다음과 같이 정리할..

리버싱 2013.05.01

17일차, (백트랙)리턴 주소를 활용한 악성코드 생성.

## 주소값을 이용한 악성코드 로직지역변수 부분이 들어가는 부분의 크기를 확인 한 후 그 부분을 모두 채우고 난 뒤 리턴값이 들어가는 부분을 1. port scan - nmap 2. session -nc 3. Attack -perl\\\\\\\\\\\\\ 1.port Scan #nmap -sS -f XP의 IP -p 6000-7000 (총 65355여개)xp: 150 linux : 1002. Session NC=netcat # nc Xp의 IP 6235root@bt:~# nc 192.168.17.150 6235 Hello server : hi, Client Hello09_vuln_server가 문자열을 저장했다가 돌려준다.func(char *str){ char buf[4]; memcpy(buf,str,1..

리버싱 2013.05.01

16일차, 복귀주소를 활용한 악성코드 실습

clt + f8로 caller부분 breakpoint하고 찾아서 nop으로 바꿈 처음부터 분석하거나 뒤에서 ebp+4로 콜러를찾아감 ## 복귀 주소를 따라간다면 콜러를찾을수있다.!!! --------------------------- 지금은 콘솔창 void func(){ int *p; p=(int*)&p; p+=2; *p+=0x0D; } int main (int argc,char* argv[]) { printf("Buffer \n\n"); func(); printf("hackked \n"); printf("hked \n"); getch(); return 0; } //복귀주소를 0x0D로 옮긴다. 확인 win32 app // aa.cpp : Defines the entry point for the appl..

리버싱 2013.04.30
반응형