linux curl類比提交post請求(後附:PHP版)

來源:互聯網
上載者:User

閑來無事,玩一玩Linux的curl命令。很簡單的需求,攜帶cookie偽造合法的post請求。

首先還是抄一下curl命令的參數:

文法:# curl [option] [url]
-A/--user-agent <string>          設定使用者代理程式發送給伺服器-b/--cookie <name=string/file>    cookie字串或檔案讀取位置-c/--cookie-jar <file>            操作結束後把cookie寫入到這個檔案中-C/--continue-at <offset>         斷點續轉-D/--dump-header <file>           把header資訊寫入到該檔案中-e/--referer                      來源網址-f/--fail                         串連失敗時不顯示http錯誤-o/--output                       把輸出寫到該檔案中-O/--remote-name                  把輸出寫到該檔案中,保留遠程檔案的檔案名稱-r/--range <range>                檢索來自HTTP/1.1或FTP伺服器位元組範圍-s/--silent                       靜音。不輸出任何東西-T/--upload-file <file>           上傳檔案-u/--user <user[:password]>       設定伺服器的使用者和密碼-w/--write-out [format]           什麼輸出完成後-x/--proxy <host[:port]>          在給定的連接埠上使用HTTP代理-#/--progress-bar                 進度條顯示當前的傳送狀態

當然了,上面的還是不夠詳細,剩下的就留待以後補充了。

言歸正傳,回到剛才的話題,我的demo是這樣的,首先通過curl命令擷取到某個網站的cookie,之後攜帶這個cookie,以及一些參數,在該網站暴露的介面中去提交請求。(不知道這種行為算什麼)

步驟如下:

1. 通過curl 直接down下來cookie,使用 '-D' 命令。

nohup curl -D cookie.txt https://zhidao.baidu.com
現在cookie資訊就已經寫入到了cookie.txt檔案中,如下展示。


2. OK,cookie拿到了,就剩下搞破壞了,還是使用本地測試的URL,直接暴露別人的bug也不大厚道。

nohup curl -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0" -b cookie001.txt -d "a=2660884526" -d "b=2660884526" -d "c=2660884526"  http://li.wukong.com/arr.php

php代碼如下:

<?php$headers = getallheaders();echo PHP_EOL.'HEADER頭:'.PHP_EOL;print_r($headers);$content = file_get_contents('php://input');echo PHP_EOL.'訪問請求的未經處理資料的唯讀流:'.PHP_EOL;print_r($content);echo PHP_EOL.PHP_EOL.'POST資料參數:'.PHP_EOL;print_r($_POST);exit;

輸出如下:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100   512  100   474  100    38   6571    526 --:--:-- --:--:-- --:--:--  6676HEADER頭:Array(    [Host] => li.wukong.com    [User-Agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0    [Accept] => */*    [Cookie] => name1=1; name2=2; name3=3    [Content-Length] => 38    [Content-Type] => application/x-www-form-urlencoded)訪問請求的未經處理資料的唯讀流:a=2660884526&b=2660884526&c=2660884526POST資料參數:Array(    [a] => 2660884526    [b] => 2660884526    [c] => 2660884526)

好吧,重點是攜帶cookie,post資料合法的請求資料。當然了,上面的demo只是application/x-www-form-urlencode格式的,下面貼一個application/json 格式的,同樣很簡單

nohup curl  -A "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0" -b cookie.txt -H 'Content-Type: application/json' -d '{"a":"2660884526", "b":"2660884526", "c":"2660884526"}' http://li.wukong.com/arr.php

響應如下:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100   461  100   407  100    54  19760   2621 --:--:-- --:--:-- --:--:-- 21421HEADER頭:Array(    [Host] => li.wukong.com    [User-Agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0    [Accept] => */*    [Cookie] => name1=1; name2=2; name3=3    [Content-Type] => application/json    [Content-Length] => 54)訪問請求的未經處理資料的唯讀流:{"a":"2660884526", "b":"2660884526", "c":"2660884526"}POST資料參數:Array()

也很簡單,只需要使用 -H 參數直接修改自訂header頭即可。

下面附一個純PHP類比post表單提交的代碼:

<?php$post = '{"a":"2660884526", "b":"2660884526", "c":"2660884526"}';$post = json_decode($post, true);$ch = curl_init();curl_setopt_array($ch , array(CURLOPT_URL => "http://li.wukong.com/arr.php",CURLOPT_HTTPHEADER => ['Host:li.wukong.com','User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0',],//CURLOPT_COOKIE => "name1=1; name2=2; name3=3",CURLOPT_COOKIEFILE => "cookie.txt",CURLOPT_FOLLOWLOCATION => 1,CURLOPT_RETURNTRANSFER => true,CURLOPT_CUSTOMREQUEST => 'POST',CURLOPT_POSTFIELDS => $post,));$res = curl_exec($ch);curl_close($ch);var_dump($res);

響應如下:

string(503) "HEADER頭:Array(    [Host] => li.wukong.com    [Accept] => */*    [Cookie] => name1=1; name2=2; name3=3    [User-Agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0    [Content-Length] => 346    [Expect] => 100-continue    [Content-Type] => multipart/form-data; boundary=------------------------a40cc9c12f3efc06)訪問請求的未經處理資料的唯讀流:POST資料參數:Array(    [a] => 2660884526    [b] => 2660884526    [c] => 2660884526)"

有一點需要注意一下,當post的資料是字串而不是數組時,Content-Type會自動變成application/x-www-form-urlencoded。

上面的PHP代碼,將json_decode那行注釋之後響應如下:

string(489) "HEADER頭:Array(    [Host] => li.wukong.com    [Accept] => */*    [Cookie] => name1=1; name2=2; name3=3    [User-Agent] => Mozilla/5.0 (Macintosh; Intel Mac OS X 10.11; rv:50.0) Gecko/20100101 Firefox/50.0    [Content-Length] => 54    [Content-Type] => application/x-www-form-urlencoded)訪問請求的未經處理資料的唯讀流:{"a":"2660884526", "b":"2660884526", "c":"2660884526"}POST資料參數:Array(    [{"a":"2660884526",_"b":"2660884526",_"c":"2660884526"}] => )"



相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.