Summary SROP (SigReturn Oriented Programming) rt_sigreturn syscall stack emulate Analysis 0x401000: push rbp 0x401001: mov rbp,rsp 0x401004: sub rsp,0x40 0x401008: mov eax,0x1 0x40100d: mov edi,0x1 0x401012: lea rsi,ds:0x402000 //"Hey, can i get some feedback for the CTF?" 0x40101a: mov edx,0x2a 0x40101f: syscall 0x401021: mov edi,0x0 0x401026: lea rsi,[rsp-0x40] //buf 0x40102b: mov edx,0x400 //..
Summary seccomp 우회 gadget in libc syscall orw Analysis 스트링에 base64로 된 문장이 있는데 복호화하면 /home/seccomp/flag 이라는 문장을 얻을 수 있다. orw 하는 문제라는 것을 예측 할 수 있다. hyomin@ubuntu:~/hy0/ctf/layer/pwn/how_old$ seccomp-tools dump ./seccomp line CODE JT JF K ================================= 0000: 0x20 0x00 0x00 0x00000004 A = arch 0001: 0x15 0x00 0x12 0xc000003e if (A != ARCH_X86_64) goto 0020 0002: 0x20 0x00 0x00 0x..
널루트 테스트에서 포너블 문제를 못 풀 것 같았는데, 운이 좋게 rich문제를 풀게 되었고 그동안 공부한 포너블 지식들을 잘 활용한 것 같아 스스로 뿌듯함을 느끼게 해준 문제였습니다. 또한 syscall에 대해 얕은 지식만 있었는데, 이 문제를 통해 처음으로 syscall을 이용한 rop로 exploit을 성공하였습니다. 저번 1차 테스트와 같이 널루트문제를 풀면서 많은 것을 찾아보며 지식을 배운 것 같습니다. 고등학생이라 단지 문제만 공유받는 중이지만 생각보다 얻는게 많은 것 같습니다. 좋은 문제 감사합니다. 1. Binary 이 바이너리는 ELF 64bit 파일입니다. static 컴파일이 되어 있었고, strip된 파일이였습니다.static 컴파일과 strip이 되어있어서 분석이 어려웠지만 gdb로..
이 문제는 house of force기법을 이용한 힙 문제인데, format string bug를 trigger하는 과정이 필요하고 나한테는 다소 복잡하지만 이해하니 재밌는 문제였다. fileELF 32bit 파일이다. 보호기법canary와 nx가 걸려있다. 분석main함수를 보면 먼저 while문 전에 함수를 호출한다. input_name함수를 보면 Input your name: 이라는 문구가 출력되고 input_read 함수가 실행된다. 2번째 인자까지 입력 받고, 개행문자가 도중에 있으면 break한다. 다시 input_name 함수로 돌아와서, v2 를 0x40(64) 만큼 malloc 해주고 입력 받은 name을 chunk에 strcpy를 진행한다. malloc 공간이 64이고 입력도 64까지 ..
본선에 출제되었던 문제였는데 UAF문제이다. 바로 분석해보겠다. elf 32bit이다.canary와 nx가 활성화 되어있다. main 윗부분에 while(1)을 돈다. index 함수는 내가 rename한 그냥 바이너리 실행 처음 화면이다.대충 이런 메뉴들이 있다.다시 메인으로 돌아와서 보면 아까 index()를 기반으로 switch ~ case 구문이 있다. buf를 read로 입력 받기 때문에 case 1,2,3,4 정수형이기에 파이썬으로 \x01이런 식으로 보내줘야 한다. 먼저 case1부터 분석하겠다. case1은 Buy cat 고양이를 사는 case이다. ptr은 0으로 초기화가 되어있다. case1을 두번 불르면 ptr에는 값이 들어가서 You already ~ 문을 puts한다. 처음 cas..
어디선가 많이 들어본 문제였는데 이제서야 푼다. 먼저 바이너리를 분석해보겠다. elf 32bit파일이다 아이다로 분석해보겠다. 메인함수이다. 일단 카나리가 있다. 일단 이름을 전역변수에 입력을 받고 그 이름을 출력해준다. 그리고는 무한로프를 돈다 먼저 switch의 인자값을 보면. 메뉴를 보여주고 입력을 받고 리턴해준다.menu로 rename하겠다. case문을 보면 아마 메뉴에 맞는 각 함수들 일것이다.근데 \xff\xff\xff\xff는 무엇일까. 바로 -1이다. 문제를 푸는데에는 지장없으니 넘어가겠다. 먼저 메뉴 1부터 보자. case 1 같은 경우에는 v1의 주소를 인자로 넘겨준다. v1은 4400 바이트만큼의 크기를 할당 받는다. 다시 case 1의 함수를 보자. add music을 보니 아마 ..
먼저 이 바이너리는 소켓 프로그래밍이 되어있다. 그래서 ctf환경을 만들기 위해 baobob1024.tistory.com/89 에 적힌 방법대로 nc환경을 만들어주었다. 이렇게 실행을 해주고, 접속을 하면 - nc localhost 31338 잘 작동을 한다. 바이너리 분석을 해보겠다. elf 32bit 이다. 핵심 함수 이다.buffer의 위치는 bp-0x80c인데 입력을 0x1000만큼 받는다 -> BOF가 발생하여ret을 조작할 수 있다. Welcome to CSAW CTF전에 buffer_address와 cookie의 시작주소를 출력해준다. 이부분에서 secret과 cookie가 맞지않으면 exit를 해버리는데 좀있다가 보겠지만 bof할때 이 값이 맞지않아 exit가 되면 쉘코드가 실행되지 않는다..
- 본선가고싶다
- stack reusing
- shellcoding
- pwnable
- pwnable.tw
- hacking
- codegate
- ebp change
- tcache
- SQLi
- fastbin
- HackCTF
- overflow
- 해킹
- srop
- heap
- pwable
- FSB
- exit
- rt_sigreturn
- fsop
- oob
- glibc
- fastbindup
- TLS
- Total
- Today
- Yesterday