본문 바로가기

pwnable44

[Pwnable] 기초 포너블 공격기법 총정리 (Heap 익스는 따로 포스팅 하겠습니다. ( UAF, DFB, house of 시리즈 등등)) 시스템해킹 (포너블) 을 하기 위한 기본적인 공격 방법들에 대해 설명하고 실제로 어떻게 사용해 문제를 푸는지, 그리고 중간중간 팁들도 대충 자세하게 알려드리겠습니다. 이 글은 C 언어 와 python 을 알고있고, 기초적인 리버싱 을 알고있어 어셈을 볼 수 있으며 리눅스를 사용할 수 있다는 전제 하에 진행됩니다. 내용 공격기법별로 자세한 설명 BufferOverFlow ReturnOriantedProgramming ReturnToLibrary ReturnToCsu STACK-PIVOTING Integer Issues FormatStringBug OutOfBound 간단한 메모리구조 및 함수 프롤로그, 에필로그.. 2020. 11. 12.
[HackCTF] (Pwnable) World Best Encryption Tool 실행시키면 $rbp-0x80 에 입력을 받고 암호화 해서 출력한다. (딱봐도 28 이랑 XOR 연산) 57글자부터 canary값으로 추정되는값이 leak 된다. Analyze undefined8 main(void) { int iVar1; long in_FS_OFFSET; uint local_90; char local_8c [4]; byte local_88 [64]; char local_48 [56]; long local_10; local_10 = *(long *)(in_FS_OFFSET + 0x28); setvbuf(stdout,(char *)0x0,2,0); do { puts("Your text)"); __isoc99_scanf(&DAT_00400913,local_88); local_90 = 0; wh.. 2020. 9. 17.
[HackCTF] (Pwnable) Register 풀이 Main 함수다. 5초뒤에 alarm signal (14) 를 보낸다. main 에서 호출하는 build 함수인데, alarm signal(14) 에 대한 핸들러를 설정하고, 루프문에서 get_obj 함수로 obj 부터 obj+48 까지 입력을 받는다. vaildate_syscall_obj() 함수를 호출해서, 리턴값이 0 이면, alarm signal(14) 을 보내서, alarm handler (syscall) 을 호출해준다. alarm signal(14) 에 대한 handler 이 호출하는 함수이다. 인자로는 전역변수 obj 의 offset 을 주고, obj ~ obj + 48 까지 순서대로 rax, rdi, rsi, rdx, rcx, r8, r9 에 넣고 , syscall 을 해준다. obj(ra.. 2020. 9. 10.
[HackCTF] (Pwnable) RTC 풀이 int __cdecl main(int argc, const char **argv, const char **envp) { char buf; // [rsp+0h] [rbp-40h] setvbuf(stdin, 0LL, 2, 0LL); write(1, "Hey, ROP! What's Up?\n", 0x15uLL); return read(0, &buf, 0x200uLL); } main 함수이다. rbp-0x40 에 0x200 을 입력받는다. 보호기법은 NX 만 enable 되어있다. 라이브러리파일이 주어졌기때문에 write 함수로 read@got 주소를 leak 해서 라이브러리베이스를 구한 뒤, 원샷가젯으로 return 하자. 하지만 pop rdx 가젯이 없기때문에 csu 함수 로 리턴하자 . r12+rbx*8 .. 2020. 9. 10.