2017-10-11 114 views
0

如何嵌入像mysql -sN -e「query;」這樣的命令?在perl腳本中,這樣我的shell將成爲進行數據庫連接的shell。查詢是一個有點複雜的查詢,它可以從命令行完美運行,但是當我在我的perl程序中設置它時,我得到了一堆錯誤,如「在操作符預期的位置找到字符串」,「在操作符期望的地方找到字符串」以及語法錯誤。任何想法如何做到這一點,而無需給予perl訪問數據庫?在perl程序中嵌入shell命令

+0

你不能。您需要使用[DBI](http://search.cpan.org/~timb/DBI-1.637/DBI.pm) – mkHun

+0

您可以發佈您的Perl代碼嗎? –

+4

通過調用具有反引號的'mysql'客戶端來暴露shell注入和SQL注入的漏洞,而不是通過反引號來發布相關代碼,以尋求修復該代碼的指導,以便您不會遇到「找到操作符期望的字符串」的問題,以及「發現操作員預期的空白詞」錯誤。 Perl的DBI模塊與DBD :: mysql結合提供了更好的解決方案,包括佔位符/綁定值以及避免hacky'mysql' cli調用。 – DavidO

回答

1

您可以使用反引號,下面的示例將OS ls -l命令的輸出放入內容中。假設你知道你在做什麼的風險。

#!/usr/bin/perl 

use strict; 

my $content=`ls -l`; 
print $content; 
+0

完美的作品。多謝你們。 –