본문 바로가기

CTF

(51)
PlaidCTF pwnable_ropasaurusrex Write up 전형적인 32 비트 ROP 문제이다. 공격 시나리오는 메모리 leak 을 시킨다음에 그걸로 offset 계산해서 익스시켜주면 되는 문제이다. 함수는 read 랑 write 함수가 주어진다. 그냥 개꿀하고 정석 ROP 로 익스시켜주면된다. from pwn import * #context.log_level = 'debug' context.terminal = ['tmux', 'splitw', '-h'] p = process("./ropasaurusrex") binf = ELF("./ropasaurusrex") #gdb.attach(p) write_plt = binf.plt['write'] write_got = binf.got['write'] read_plt = binf.plt['read'] read_got =..
Nactf pwnable_buf3 Write up 이 문제 처음봤을때 그냥 간단하게 익스될거같았다. 하지만 어림도 없지 ㅋㅋㅋ 정말 황당했던 문제였다. 일단 이 문제 역시 소스코드를 주었다. 딱 소스코드 보자마자 buf 하면 되겠구나 생각하고 풀었다. void vuln() { char buf[16]; printf("Type something>"); gets(buf); printf("asldf : %p\n",&buf); printf("You typed %s!\n", buf); } void win(long long arg1, int arg2) { printf("arg1 : %p | %p\n ", &arg1, arg1); printf("arg2 : %p | %p\n", &arg2, arg2); if (arg1 != 0x14B4DA55 || arg2 != 0x..
Nactf pwnable_buf2 Write up Nactf pwnable 문제 2번 이다. 일단 ./buf2 를 실행시키면 입력받는 창이 나온다. 딱 봐도 "익스해주세요" 라고 적혀 있다. 그래서 일단 기본적인 buf 문제라면 분명 플래그 보여주는 함수나 이런게 존재할것이라고 판단하여 gdb를 이용하여 확인을 해보았더니 win 이라는 함수가 존재했다. 플래그 파일 읽어와서 뛰어주는 형식인거 같아 보였다. 즉 익스 시나리오를 짜보면 ret를 변조시켜서 저 win 함수를 실행시켜주면 문제는 풀릴것이다. 24바이트짜리 변수 선언해주는거같아서 대충 28바이트 이상 해줬더니 세그 뽈트 떳다. 그래서 그냥 32비트니까 28바이트로 익스시켰다. exploit.py from pwn import * p = remote("shell.2019.nactf.com",3146..