일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Suninatas
- Reflected XSS
- Openstack
- vulnhub
- ESXi
- 인시큐어뱅크
- logstash
- kibana
- MFT
- Volatility
- NTFS
- elasticsearch
- XSS
- ctf
- CTF-d
- 파이썬
- SQL Injection
- lord of sql injection
- otter
- diva
- 2018
- Strings
- base64
- Docker
- 안드로이드
- igoat
- frida
- InsecureBank
- foremost
- beebox
- Today
- Total
목록WarGame/Protostar (6)
Information Security
char type 64 byte array buffer를 선언한다. agets() 함수를 통해 user로부터 값을 입력받는다. win() 함수는 "code flow successfully changed\n"를 출력한다. stack 4를 gdb로 분석했다. disas main 후 retrun으로 갈 때에 win() 함수로 가게 값을 변경해 주어야하기 때문에 b *main+38 브레이크로 설정한 후 pattern create 100을 통해 임의 문자 100개를 생성했다. 0x0000000000401132 주소가 win() 함수의 시작 주소인 것을 알 수 있다. 64 byte(buffer) + 8 byte(SFP) = 72 byte padding. 72 byte padding 후 8 byte의 win() 함수..
volatile keyword를 사용하여 int type function pointer *fp를 선언한다. char type 64 byte array buffer를 선언한다. function pointer fp(함수의 주소)에 0을 대입한다. gets() 함수를 통해 user로부터 buffer에 문자열을 입력받는다. 만일 fp의 값(함수의 주소 값)이 0이 아니면 "calling function pointer, jumping to fp"를 출력하고 fp() 함수를 실행한다. 만일 fp가 0이면 아무것도 실행하지 않는다. void의 return을 갖는 win() 함수를 선언한다. win() 함수는 "code flow successfully changed"라는 문자열을 출력한다. "A" * 4 입력 시 아무..
volatile keyword를 사용하여 int type modified를 선언한다. char type array 64 byte buffer를 할당한다. 그리고 환경변수를 사용한다. getenv() 함수를 사용하여 "GREENIE" 환경변수의 주소를 variable에 return을 하며 "GREENIE"의 이름을 가진 환경변수가 없다면, return NULL 값을 반환한다. 만일 variable의 주소가 NULL이면 (즉, GREENIE의 환경변수가 set 되지 않으면) "please set the GREENIE environment variable" error message를 출력한다. modified 변수를 0으로 초기화 하고 variable(GREENIE)의 내용(String)을 buffer로 co..
volatile 4byte int type 변수 modified 선언, char buffer 64byte char type arrary buffer 선언했다. modfied 값을 0x61626364로 초기화해야 하는 것 같다. AAAA, BBB를 입력해보았는 데 Try again 메시지를 보여준다. A를 여러개 입력 해 overflow 발생시켰지만 modified 값이 "0x61626364"로 변경되지 않을 경우 아래와 같은 메시지를 보여준다. disas mian 명령어를 통해 main 함수를 확인했다. 0x61626364와 modified를 비교해야 하므로 modfied = rbp - 0x4(main+76)이다. buffer는 strcpy의 detination이므로 *main+68이다. rdi가 rax..
volatile 함수는 변수를 사용할 때 최적화에서 제외하여 항상 메모리에 접근하도록 하는 함수다. modified 4byte 정수형을 선언하고, buffer 64byte를 선언한다. modified 변수를 0으로 초기화하고, gets() 함수를 통해 사용자로부터 buffer에 입력받는다. ./stack0 AAAA 입력 시 "Try again?" 메시지를 보여준다. gdb ./stack 0 명령어를 입력 후 main 부분을 확인했다. break point를 main+42 설정 후 run을 해주고 a 80개를 입력해주었다. 80 바이트 이유는 0x54 - 0x4 =0x50(80) 이기 때문이다. main+39를 보면 $rbp-0x40로 되어 있다. modfied의 주소이기 때문에 해당 주소를 보면 0x41..