在perl程序中嵌入shell命令
问题描述:
如何嵌入像mysql -sN -e“query;”这样的命令?在perl脚本中,这样我的shell将成为进行数据库连接的shell。查询是一个有点复杂的查询,它可以从命令行完美运行,但是当我在我的perl程序中设置它时,我得到了一堆错误,如“在操作符预期的位置找到字符串”,“在操作符期望的地方找到字符串”以及语法错误。任何想法如何做到这一点,而无需给予perl访问数据库?在perl程序中嵌入shell命令
答
您可以使用反引号,下面的示例将OS ls -l命令的输出放入内容中。假设你知道你在做什么的风险。
#!/usr/bin/perl
use strict;
my $content=`ls -l`;
print $content;
+0
完美的作品。多谢你们。 –
你不能。您需要使用[DBI](http://search.cpan.org/~timb/DBI-1.637/DBI.pm) – mkHun
您可以发布您的Perl代码吗? –
通过调用具有反引号的'mysql'客户端来暴露shell注入和SQL注入的漏洞,而不是通过反引号来发布相关代码,以寻求修复该代码的指导,以便您不会遇到“找到操作符期望的字符串”的问题,以及“发现操作员预期的空白词”错误。 Perl的DBI模块与DBD :: mysql结合提供了更好的解决方案,包括占位符/绑定值以及避免hacky'mysql' cli调用。 – DavidO