运行gdb cmd时,我可以通过Ctrl-C手动停止cmd。这将调用调试器并让我检查内存。
在pwntools中,我可以附加gdb,还可以通过在gdb窗口中按Ctrl-C来手动停止该进程。我希望能够从pwntools脚本以编程方式完成此操作:类似于:
if output != expected:
io.gdb.ctrlc() # break, let me use gdb
这不一定需要pwntools的答案。GDB有一个强大的Python API,但我找不到等同于“中断进程,就好像有人按下了Ctrl-C”。有没有办法做到这一点,通过GDB Python API或通过pwntools方法
示例输入脚本
import time
for i in range(5):
print("LOADING " + str(i))
time.sleep(1)
for i in range(10):
print("RUNNING " + str(i))
time.sleep(1)
需要一种方法来运行启动脚本,最好是python 3子进程,并连续监视和打印输出,并在它开始打印“运行”时立即终止它,类似于在终端中发送CTRL+C。
有类似的解决方案,但似乎没有任何服务于此目的的
我正在尝试使用pwntools来控制python3会话。下面是我的代码: from pwn import process
r = process(['python3'])
r.interactive() 但是,在我进入r.interactive()之后,当我在终端中输入时,python3子进程会有奇怪的反应。至少在大多数情况下,我没有看到我的命令被回放。 我还试图在bash会话中调用python3,但同样的事情也发生了。 $ python3
Python 3.8.5 (default, Jan 27 2021, 15:41:15)
[GCC 9.3.0] on linux
我有一个可执行的,我想利用它。该文件的输出如下所示:
$ ./vuln_nostack
Enter some text:
enteringTEXT
You entered: enteringTEXT
你输入一些文本,然后程序把它吐回来。
我希望使用python和pwntools运行这个prorgam (以及稍后利用它)。
到目前为止,我的pwntools程序的功能部分如下所示:
from concurrent.futures import process
from sys import stdout
from pwn import *
import time
pty = process
我想掉进一个壳为ctf的比赛,我正在工作。我不允许在这方面使用pwntools。我想实现类似于python的如下目标:
import os
os.system("/bin/bash &")
print("hello world") # assume I am writing to a file
os.system("fg") # does not work (but assume resuming shell /bin/bash)
我不能使用子进程,因为我需要跳入一
我正在测试英特尔x86_64、Ubuntu 64位、Python3、Pwntools v4.3.1
$ python
Python 3.7.4 (default, Aug 13 2019, 20:35:49)
[GCC 7.3.0] :: Anaconda, Inc. on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> from pwn import *
>>> addr = 0
在Python2.7的pwntools库中,地址被声明为address = p64(0x7fffffff0000)。我一直在绞尽脑汁试图弄清楚如何增加这个地址,尽管在编辑过程中我一直遇到转换错误。我从基本的东西开始,最初:
from pwn import *
address = p64(0x7fffffff0000) # starting hex value
for i in range(0, 65535): # how many times you want to increment
i +=1
address = p64(0x7fffffff0000 + i
我有下面的ROP gaget to execv shell。 from struct import pack
p = "\x90"+"a"*71
p += pack('<Q', 0x0000000000001b96+0x007ffff79e4000) # pop rdx ; ret
p += pack('<Q', 0x00000000003eb1a0+0x007ffff79e4000) # @ .data
p += pack('<Q', 0x00000000000439c8+0x007ffff7