前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【Linux】关于Curl工具与HTTP的二三事

【Linux】关于Curl工具与HTTP的二三事

作者头像
一名白帽的成长史
发布2019-10-08 16:09:05
1.8K0
发布2019-10-08 16:09:05
举报
文章被收录于专栏:一名白帽的成长史

Hello,各位小伙伴周六好~

经历了一个多月不更新的小编,这周简直劳模附体。

果然大家对编程都不感兴趣,哈哈

今天一起来看看linux上的一款web访问工具curl吧~

Part.1

Curl工具

什么是curl?

在Linux中,我们除了可以使用浏览器访问web服务外,还可以使用curl工具。

curl是一个命令行工具,通过指定的URL来上传或下载数据,并将数据展示出来。

通过curl我们可以发送自定义get、post请求。

curl的基本用法

首先我们在服务器端写一个简单的PHP代码curl.php,来测试curl的基本功能,如下:

说明如下:

  • 通过Get方法接收到的flag参数赋值给变量flag1
  • 通过POST方法接收到的flag参数赋值给变量flag2
  • 如果flag1或者flag2不为空,则打印相应参数的值

(1)Get方式访问

直接使用curl方法访问指定url,默认采用的就是Get方法,如下:

wireshark抓包结果:

Get方法传参的方式和浏览器相同,在?后跟相应的参数即可,收到回复flag1 is 123:

加上-i选项,可以显示请求头详细信息:

加上-v选项,可以显示请求头、响应报文信息:

(2)Post方法访问

发送Post请求,需要跟-X参数,如下:

wireshark抓包如下:

通过-d选项,可以指定要传的参数:

curl修改请求头信息

通过curl -H选项,我们可以添加、修改请求头信息。使用如下PHP代码进行测试:

说明如下:

  • 通过$_SERVER["REMOTE_ADDR"]可以接收建立TCP连接时的源IP地址
  • 通过$_SERVER["HTTP_CLIENT_IP"]可以接收HTTP头部Client-ip传递的参数
  • 通过$_SERVER["HTTP_X_FORWARDED_FOR"]可以接收HTTP头部中XFF传递的参数
  • 通过$_COOKIE['value']可以接收HTTP头部cookie字段中value的值
  • 如果以上参数不为空则打印出来

(1)几种IP传参方式对比

首先,$_SERVER是一个全局变量,与$_GET、$_POST一样,可用于获取客户端的信息。

$_SERVER[“REMOTE_ADDR”],获取的是客户端与服务器三次握手时建立连接使用的源IP,这个不属于HTTP头部参数,无法伪造。

而$_SERVER["HTTP_CLIENT_IP"]和$_SERVER["HTTP_X_FORWARDED_FOR"]分别用于接收HTTP头部中的Client-ip字段和x-forwarded-for字段传递的值,用于识别客户端源IP地址。两者传递的信息,都是可以伪造的。

另外,$_SERVER[“REMOTE_ADDR”]接收的是报文IP层的源IP地址,所以经过NAT或者代理等环境后,源IP会发生改变,就不是客户端的真实IP了。

Client-ip和x-forwarded-for则可以在发包时,将客户端的真实源IP记录在HTTP头部当中,使服务器端可以识别。以上是三者的区别。

(2)IP传参

首先不传参,直接访问,REMOTE_ADDR可以接收到值,打印flag3:

通过添加client_ip头部传递任意值,打印flag4:

通过添加XFF头部也可以传递任意值,打印flag5:

注意:client-ip和XFF的不同之处在于,client-ip不属于标准请求头信息,部分服务器可能不识别,因此XFF用的更多。

(3)Cookie传参

通过Cookie字段可以传递指定Cookie值:

通过以上方法也可以设置其他请求头信息。

Part.2

结语

好啦,以上就是curl工具的简单使用了。

写这篇文章也是因为,接下来要写python脚本如何发送自定义Get、Post请求,方便大家对照学习。(没想到吧,python学起来!)

Peace !

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-10-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一名白帽的成长史 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
命令行工具
腾讯云命令行工具 TCCLI 是管理腾讯云资源的统一工具。使用腾讯云命令行工具,您可以快速调用腾讯云 API 来管理您的腾讯云资源。此外,您还可以基于腾讯云的命令行工具来做自动化和脚本处理,以更多样的方式进行组合和重用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档