【问题标题】:passing python -c to running program in gdb将 python -c 传递给 gdb 中正在运行的程序
【发布时间】:2018-10-09 21:27:45
【问题描述】:

我目前正在使用这个 C 程序(是的,我知道它的漏洞)。

int main(int argc, char **argv)
{
    char buffer[64];
    gets(buffer);
}

当我把它放到 gdb 中时,我想运行它然后传递一个 python 命令。例如

gdb -q test
Reading symbols from test...(no debugging symbols found)...done.
(gdb) r
Starting program: /tmp/test 
python -c 'print "A" * 100'
[Inferior 1 (process 14912) exited normally]
(gdb) r
Starting program: /tmp/test 
`python -c 'print "A" * 100'`
[Inferior 1 (process 14917) exited normally]
(gdb) 

真的可以在运行后将python命令传递给程序吗?还是最好只从 gdb 中执行此操作并通过管道输入?

干杯

【问题讨论】:

    标签: python c gdb exploit


    【解决方案1】:

    真的可以在运行后将python命令传递给程序吗?

    是的,但你做错了。你的命令做什么:

    /tmp/test `python  -c 'print "A" * 100'`
    

    相当于:

    /tmp/test AAAAA...A
    

    你想要什么:

    (gdb) run <(python -c 'print "A" * 100')
    

    相当于:

    echo "AAAAA...A" | /tmp/test
    

    【讨论】:

    • 感谢您的回复。我在我正在使用的一个漏洞利用盒上尝试了这个并得到:(gdb) run &lt;(python -c 'print "A" * 100') Starting program: /opt/protostar/bin/stack4 &lt;(python -c 'print "A" * 100') /bin/sh: Syntax error: "(" unexpected During startup program exited with code 2. 我想这只是漏洞利用盒设置的一个问题。虽然我在我的实际系统上尝试过,但 gdb 只是挂起。
    猜你喜欢
    • 1970-01-01
    • 2011-10-08
    • 2012-07-16
    • 1970-01-01
    • 2022-01-08
    • 2011-04-17
    • 1970-01-01
    • 2010-09-24
    • 1970-01-01
    相关资源
    最近更新 更多