딱히 올릴려는 생각은 없었는데 원샷가젯을 처음 사용해봐서 올린다. @~@ 이전 rtc글과는 다른점은 페이로드가 짧아졌다는 점? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 from pwn import * context.log_level = 'debug' p = remote('ctf.j0n9hyun.xyz', 3025) e = ELF('./rtc') l = e.libc setcsu = 0x00000000004006BA csu_call = 0x00000000004006A0 one_offset = 0xf1147 write_got = e.got..
배우려다가 2달 지연된 rtc.. rtc는 return to csu의 약자로 바이너리 안에 존재한는 csu함수 또는 init fini를 이용해서 익스하는 기법이다. 바이너리는 실행시키자마자 바로 bof를준다. 64bit rop로도 exploit가능한 문제. 대충 rtc를 설명하자면 40073A부터 쭉 내려오는 pop register 들을 이용해 레지스터에 값을 넣고 400720을 통해 edi(rdi) rsi rdx에 값을 넣어주고(인자전달) call에 원하는 함수_got를 넣어서 실행(r12)시키고 cmp와 jnz의 조건을 맞쳐서 계속 chain해주면 된다. 가젯으로 40073A와 400720의 주소를 사용할예정이다. (40073A, 400720)가젯은 해당주소부터 쭉 내려오면서 ret을 만날때까지 실행..
동아리 선배들한테 받은 문제 이 문제는 어셈으로 만들어져서 ida의 디컴파일의 기능이 안먹는다. 직접 어셈보고 해석한 문제 https://blog.rchapman.org/posts/Linux_System_Call_Table_for_x86_64/ Linux System Call Table for x86 64 · Ryan A. Chapman Linux 4.7 (pulled from github.com/torvalds/linux on Jul 20 2016), x86_64 Note: 64-bit x86 uses syscall instead of interrupt 0x80. The result value will be in %rax To find the implementation of a system call, ..
여차여차해서 18위내로 통과..