본문 바로가기

전체 글

(167)
5장 플로피 디스크에서 OS 이미지를 로딩하자 보호되어 있는 글입니다.
4.3 부트로더 제작과 테스트 보호되어 있는 글입니다.
3.1 운영 모드 보호되어 있는 글입니다.
ROP 기법 ROP(Return Oriented Programming)프로그램 내부에 있는 가젯을 이용해 BOF 공격 시 특정 명령을 실행 시키는 방법 들어가기에 앞서 보호기법 4가지를 소개하겠다 NX: 쓰기와 실행 권한을 동시에 가지지 않는다 코드영역에 쓰기를 할 수 없고 데이터 영역에 실행을 할 수 없다환경변수에 쉘코드와 NOP를 넣고 브루트 포싱 해결 가능 ASLR: 스택, 힙, 라이브러리 주소가 랜덤화된다 ulimit -s unlimited으로 해결할 수 있다스택의 크기를 최대로 늘리는 명령어 PIE: 바이너리 영역을 랜덤화 SSP: 변수 순서 재배치카나리(BOF가 발생할 때 카나리를 덮으면 강제 종료) 추가 그럼 ROP 기법을 사용해 우회 해보자!여기서 우회란 보호기법이 제한하고 있는 사항을 넘어서 제한하지..
reversing kr pe password ㅎㅇ 오리지널.exe를 실행하면 이렇게 나온다 패커.exe는 이런 프로그램이다그럼 올리디버거로 열어보자 막 넘기다가 보면 이렇게 나온다xor dword ptr ds:[edi],eax 이 부분에서 0x401000의 옵코드를 XOR한다EAX와 EBX의 값에 따라 XOR을 바뀌게 할 수 있다0x014CEC81 0xB6E62E17 0xb7aac296 이런 결과가 나온다그럼 EAX값이 0xb7aac296 되야하고EBX를 구하기위해 루프를 한번 더 돌아야한다0x4만큼 뒤로 이동해서 주소값을 XOR해야한다 0x5a5a7e05이제 EAX값과 EBX값을 브루트포싱해보자그럼 0xC263A2CB 이런 값이 나온다 EAX를 0xB7AAC296이걸로 입력하고EBX를 0xC263A2CB 이렇게 입력하면 끝
reversing kr autohotkey2 계속 하다가 안하다 하다 안하다 해서 몇달 걸린 문제다배점은 사기수준이지만 문제를 풀어서 ㄱㅇㄷ 응 그냥 풀어보자 이렇게 뜨는데 에러가 뜨는 곳으로 가보자 여기가 체크썸부분이다 바이너리끝에 있는것과 비교하는데 여기서 522D85D4랑 비교한다 이렇게 바꿔주면 끝인 줄 알았다하지만 실행해보면 똑같이 에러가 뜬다여기서 며칠 헤맸는데 autohotkey 1이랑 비교해보면00 28 03 00 F9 34 87 4390 83 9A DC D4 85 2D 52추가로 4바이트가 더 다르다고로 00 28 03 00 체크섬 해주면 된다 추가로 이렇게 해주면 끝....이 아니라체크썸이 바뀌었다다시 수정해주면 이렇게 바꿔주면성공이다 플래그가 안나오고 문장이나온다해석하면 무슨 내용같다 갓구글에 검색해보면jonsnow가 보인다이게..
pwnable.kr passcode ㅎㅇ 123456789101112131415161718192021222324252627282930313233343536373839404142434445#include #include void login(){ int passcode1; int passcode2; printf("enter passcode1 : "); scanf("%d", passcode1); fflush(stdin); // ha! mommy told me that 32bit is vulnerable to bruteforcing :) printf("enter passcode2 : "); scanf("%d", passcode2); printf("checking...\n"); if(passcode1==338150 && passcode2==1337..
PWNABLE KR ascii_easy 안녕먼저 실행해보면그냥 저러고 끝이다 IDA로 보자 return할 때 vuln함수를 호출하는데 dest = 0xa8(168)여기서 BOF가 발생한다 다시 위에 사진을 보면 getchar위에 0x18F(399)만큼 입력을 받을 수 있다 힌트를 보면 ulimit가 있는데검색을 한참 해보니깐ulimit -s unlimited라는 명령어를 사용하면 주소를 고정시킬 수 있다 0x555c5250 시스템 주소 이번에 새롭게 배운것이 코딩을 해야 쉘주소를 알줄 알았는데 find &system, -99999999, "/bin/sh"-나+를 사용해서 쉘코드 주소를 알 수 있다 0x556e4a2c /bin/sh 주소다 argv처럼 인자를 쓰는게 아니니 파이프를 사용해서 입력하자이렇게 끝났다 성공