Wargame/HackCTF30 Simple_size_bof 1. Mitigation 2. 문제 확인 자살방지 문제라고 나오고 buf주소와 값을 입력받고 프로그램을 종료한다. 3. 풀이 IDA로 파일을 열어보면 puts에서 자살방지 문자열이 출력되고 그 다음 buf 주소를 출력해준 다음 입력을 받는다. gets 부분에서 BOF가 일어난다. buf의 사이즈가 0x6d30이니 Dummy * 0x6d30 + SFP + buf addr로 리턴해주면 될것이다. exploit from pwn import * p = remote('ctf.j0n9hyun.xyz', 3005) print p.recvuntil(': ') buf_addr = int(p.recv(14), 16) print 'buf addr = ' + hex(buf_addr) shellcode = '\x31\xc0\x.. 2021. 3. 16. x64 Buffer Overflow 1. Mitigatioin 보호기법은 Full RELRO, NX enabled로 되어있다. GOT Overwrite는 불가능하다... 2. 문제 확인 입력을 받을 수 있고 입력을 받으면 Hello 문자열과 입력받은 문자열이 출력된다. 이제 프로그램을 분석해 보자. 3. 풀이 메인 함수 영역을 보면 scanf로 입력을 받는다 s와 ebp의 거리는 272만큼 떨어져있다. 그리고 입력받은 문자열을 출력해준다. callMeMaybe 함수를 보면 execve("/bin/bash")을 실행시켜주는데 callMeMaybe 함수 주소로 조작해야 할거 같다. exploit from pwn import * r = remote('ctf.j0n9hyun.xyz', 3004) elf = ELF('./64bof_basic') s.. 2021. 3. 16. 내 버퍼가 흘러넘친다!!! 이번 문제는 내 버퍼가 흘러넘친다!!! 라는 이름을 가진 Buffer Overflow 문제이다. 1. Mitigation 보호기법은 Partial RELRO 말고는 걸려있는건 없다. 2. 문제 확인 프로그램을 실행하면 Name과 input문자열이 나타나는데 입력을해보면 별다른 출력 없이 프로그램이 종료한다. 문제에대해 분석 해보자. 3. 풀이 메인 함수 부분을 살펴보면 name함수에 입력 값을 받는데 name 변수는 bss영역에 있다. 그리고 난후 s변수에 값을 입력받는다. 그렇다면 bss영역인 name에 쉘코드를 입력하고 s 변수를 통해 리턴 주소를 name 변수 주로소 조작하면 쉘이 따질것이다. exploit from pwn import * r = remote('ctf.j0n9hyun.xyz', 30.. 2021. 3. 16. Basic_FSB 이번 문제는 FSB(Format String Bug)문제이다. 일단 메모리 보호기법을 살펴보자 1. Mitigation 보호 기법은 Partial RELRO인거 말고는 아무것도 걸려있지 않다 GOT overwrite가 가능하다. 2. 문제 확인 프로그램을 실행 시키면 input 문자열이 출력되고 %8x을 입력한 결과 2번째에서 41414141이 나오는 것을 볼 수 있다. 3. 문제 풀이 IDA를 이용해 main함수 부분을 보면 vuln 함수가 있는것을 확인할 수 있다. vuln 함수 부분을 보면 snprintf와 printf가 format 인자를 그대로 받는다 여기서 Format String Bug가 생긴다 flag 함수는 쉘을 시켜주는 역할을 한다. 그렇다면 GOT overwrite가 가능하니 snpr.. 2021. 3. 16. 이전 1 ··· 4 5 6 7 8 다음