본문 바로가기

system

pwnable.tw spirited_away 보호되어 있는 글입니다. 더보기
pwnable.tw tcache tear 보호되어 있는 글입니다. 더보기
pwnable.tw seethefile 보호되어 있는 글입니다. 더보기
2015 rctf welpwn welpwn 2015 rctf welpwnputs로 leak이 안돼서 어리둥절 하고 있었는데 그 이유는got 값 1바이트가 \x00이기 때문이었다.. 주의하십쇼 main에서 0x400만큼 입력을 받고 echo 함수의 버퍼에 복사해 주는데 여기서 오버플로우가 일어난다.근데 BYTE 형태로 조건문이 되어있어 한 바이트만 ret을 덮어씌울 수 있다. main의 buf가 바로 아래에 있어 이를 이용하여 rop를 때릴 수 있다. from pwn import *​#context.log_level = 'debug'​e = ELF('./welpwn')s = process(e.path)l = ELF('/lib/x86_64-linux-gnu/libc.so.6')​ru = lambda x: s.recvuntil(x)sl =.. 더보기
2016 belluminar remuheap remuheap 2016 belluminar remuheap512 ~ 4096 사이즈로 malloc이 가능하다. ubuntu 16.04 LTS의 fgets, scanf 등은 입력 시 heap에 allocate를 한다. ( free하지 않고 계속해서 재사용함. )때문에 이를 이용하여 위 chunk에서 UAF를 발생시킬 수 있다. unsorted bin에서 UAF가 일어나고 free할 수 있으면 unsorted bin attack이 가능하다. unsorted bin의 bk를 덮고자 하는 주소 - 0x10으로 설정해 주면 unsorted bin의 unlinking 과정을 통해 덮고자 하는 주소에 &main_arena.top의 주소가 들어가게 된다. 그 후, 덮은 변수를 통하여 main_arena.top~를 변.. 더보기
main_arena와 unsorted bin attack main_arena ubuntu 16.04 LTS glibc 2.23 기준unsortedbin에서의 main_arena 동작을 살펴 본다. xxxxxxxxxx#include #include void main(){ char* a = malloc(0x80); char* b = malloc(0x10); char* c = malloc(0x80); char* d = malloc(0x10); char* e = malloc(0x80); char* f = malloc(0x10); free(a); free(c); free(e);}테스트 코드는 위 코드를 사용하였다.( gcc -o test test.c -m64 ) free 세 개에 각각 breakpoint를 걸고 main_arena를 살펴보겠다. free(a)free(a.. 더보기
2014 31c3 mynx mynx 2014 31c3 mynxasciiart 구조체와 comment 구조체의 모양은 위와 같다. (data 부분은 array임. 편의상 db로 만듦) 간단하게 프로그램 분석을 해보면첫 번째 hex값이 0x49라면 asciiart0x37이라면 comment로 판단한다.num은 index의 역할을 하며총 세 가지의 filter가 filter_ptr에 저장된다.art_data, comment_data는 우리가 입력한 문자열이 들어가는 곳이다. filter_ptr을 3번 메뉴 add_filter에서 실행시켜주므로 filter_ptr을 조작하면 풀리는 문제같다. asciiart data를 입력받는 구간이다.256바이트를 잘 맞춰서 입력받고 있다. 근데 comment data를 입력받는 곳을 보면 1바이트 오.. 더보기
nullcon hackim 2019 easy-shell easy-shell nullcon hackim 2019 easy-shellsandox 관련 문제와 멀어져 있던 나를 다시 가까워지게 만들어준 고마운?! 문제이다.대회 당시에는 풀지 못했어서 라업을 보고 다시 풀어본다. init_array에 prctl이 걸려있다.PR_SET_SECCOMP, SECCOMP_MODE_FILTER로 prctl이 걸려있으니 fprog를 디버깅 해보자. seccomp 디버깅 관련해서 아주 좋은 툴을 david942j님이 개발해 두셨다.https://github.com/david942j/seccomp-tools strace로 바이너리를 실행시켜보면위와 같이 prctl이 걸리는걸 확인할 수 있는데 이를 ptrace syscall을 이용하여 잡아내 disassemble 해주는 툴인가 보.. 더보기