ROP
[DarkCTF 2020] newPaX write up
[DarkCTF 2020] newPaX write up
2020.09.27pwnable 분야의 두번째 문제 newPaX 이다. Checksec Analyze 이번 바이너리에는 `main()` 과 `vuln()` 이렇게 2개가 있는데, `main()` 함수에는 별거 없고 `vuln()` 함수에서 `BOF` 공격이 가능하다. 이전 문제와 다른점은 `32bit` 라는 점이다. `32bit rop` 공격은 `64bit` 와 다르기 때문에, 아래 코드 처럼 `stack` 에 데이터를 overwrite 했다. 필자는 `read()` 함수의 `GOT`를 leak 했고, libc database 사이트에서 라이브러리를 다운 받아 `libc_base` 를 구했다. from pwn import * p = remote("newpax.darkarmy.xyz", "5001") e = ELF("./n..
[DarkCTF 2020] rop write up
[DarkCTF 2020] rop write up
2020.09.27pwnable 분야의 첫번째 문제 roprop 이다. (write up을 작성하는 시점에서 서버가 닫혀있어 설명하는데 지장이...) Checksec ubuntu:~/environment/ctf/DarkCTF/pwn/01_rop $ checksec roprop [*] '/home/ubuntu/environment/ctf/DarkCTF/pwn/01_rop/roprop' Arch: amd64-64-little RELRO: Partial RELRO Stack: No canary found NX: NX enabled PIE: No PIE (0x400000) Analyze 바이러니는 `main` 함수만 정의 되어 있다. `gets()` 함수에서 `BOF` 공격이 가능한 것을 볼 수 있다. 우선 `libc addre..
[TSG 2020 CTF] beginner's pwn write up
[TSG 2020 CTF] beginner's pwn write up
2020.07.14몇일간 이 문제 푼다고 고민하고 롸업 보면서 내걸로 만들려고 했지만.. 어려웠다. 덕분에 새로운 접근법을 알게 되었다. Attack tech FSP Buffer Overflow GOT Overwrite ROP Return to csu Analyze 이 문제는 총 2개의 함수가 존재하는데, main() readn() 이렇게 2개가 존재한다. main() 함수에서 readn() 함수로 입력을 받고, scanf() 함수로 한번더 입력을 받는데 여기서 FSB 공격이 가능하다. 또한 buffer overflow도 canary 우회만 된다면 가능하다. readn() 함수는 syscall() 을 이용하여 read() 함수를 호출한다. 이때 사용자가 입력한 마지막 값이 0xa 이면 rax에 그 주소를 저장하고 해당 값..