#!/usr/bin/php -f
Notice: Undefined variable: argv in C:\xampp\htdocs\test\admin-ajax.php on line 12
当我尝试使用localhost服务器(Windows7上的Xammp)运行以下代码时出现此错误消息。它是由工具RIPS创建的PHP curl漏洞利用程序。
{
#!/usr/bin/php -f
<?php
#Userinput reaches sensitive sink when function screen_icon() is called.
# template.php curl exploit
#
//
// HTTP GET,
//
$target = $argv[1];
$username = "";
$password = "";
$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
curl_setopt($ch, CURLOPT_URL, "http://localhost/wordpress3/wp-admin/admin-ajax.php?post_type=22");
curl_setopt($ch, CURLOPT_HTTPGET, 1);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)");
curl_setopt($ch, CURLOPT_TIMEOUT, 3);
curl_setopt($ch, CURLOPT_LOW_SPEED_LIMIT, 3);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 3);
curl_setopt($ch, CURLOPT_COOKIEJAR, "/tmp/cookie_$target");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
$buf = curl_exec ($ch);
curl_close($ch);
unset($ch);
echo $buf;
?> }
有任何解决这个问题的建议吗?
答案 0 :(得分:1)
在一个unix系统中,行#!/usr/bin/php
被称为shebang line,因为这种符号#!
的组合被称为她的爆炸。
当你把它作为程序运行时,她的目的是指定脚本的解释器。
所以这意味着这个脚本被命令行调用和执行。
生成错误$target = $argv[1];
的行实际上是你在命令行中输入的第二个参数。
例如:
test\admin-ajax.php site.com
^ ^
argv[0] argv[1]
但是因为您没有从命令行调用此脚本,而是从浏览器调用此错误,因为argv数组未初始化。