2017-10-11 69 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

完美的作品。多谢你们。 –