主要针对请求行,请求头(主要为键值对)和请求体(主要为数据部分)
一、get请求
get请求主要用$_GET来取数据
在这里以编写的php文件为例,如下图一所示:
写好后保存,然后根据其文件地址,利用pikachu靶场的对应网址(即创建这个php副本时利用的那个注入查询的网址/文件地址)在网页中打开
其出来的页面报错了,并没有取出我们使用$_GET想取出的数据
而在这里并没有出现我们想要的结果的原因如下图所示(我们经过抓包得到):
在这里需要强调用$_GET来取数据,并不是用来取get请求携带的数据,而是取得查询参数数据
在这里简单介绍一下查询参数
查询参数
查询参数是指在查询过程中用于指定查询条件或提供查询输入的变量或占位符。它们可以在查询时被替换为具体的值,以实现灵活的查询功能。
其在不同方面的应用:
1.Web开发:在Web开发中,查询参数用于URL中传递信息,例如在GET请求的URL后面添加?param=value来传递参数(例如下面图片中的?name = jaden)
2.数据库查询:在数据库查询中,查询参数用于指定搜索条件,例如在SQL查询中,可以使用参数来代表需要填入的数值,如@myID
3.编程和软件开发:在编程中,查询参数用于函数调用时传递数据,控制函数的执行流程
正如下图所言,当我们在右边请求端的get后面添加上查询参数后,得到了用$_GET取出的数据,即 jaden
这次依然是get请求,但是我们用$_POST来取数据
还是和上面的一样,编写好php后保存,然后在网页中打开,接着进行抓包,我们可以看到(如下图):
从这里我们可以看出用$_POST取数据与用$_GET取数据的作用不同!!!
二、post请求
post请求一般用$_POST来取数据
下面我们以post请求来看其取数据的情况
1.针对取post请求中取查询参数数据时
下图虽为post请求,但根据上面编写的php,我们要取的还是查询参数数据,所以依然要用$_GET来取数据
2.针对取post请求中取数据体中数据时
在这里需要强调的是用$_POST来取请求体(即数据体)中的数据时,在头部一定要有Content-Type这一部分的内容
三、用$_REQUEST取数据
简单说一下用$_REQUEST取数据的情况
所以当服务器后端用$_REQUEST来取数据存在安全问题,被攻击的可能性很大,所以服务器后端一般不使用$_REQUEST来取数据!!!
但用$_REQUEST来取数据,取不了Cookie里面的数据
四、Cookie提交
cookie里面的数据一般用$_COOKIE来取
以http请求头注入为例
经过抓包得到:
通过上图(即其脚本语言)我们可以知道,我们如果进行抓包后,得到的页面渲染并不会出现我们们用$_COOKIE取得的数据,要么是返回用户的id(如果用户的id存在,则进行下一步的展示;如果不存在,就登录),要么是登录失败!!!
由于cookie 里我们输入的数据会拼接的对应的语句中,所以其可能存在注入点(如下图)
蓝色框里的为报错注入语句(现在可不做了解)
当我们用 ' or 1=1#来对cookie里拼接测试时
以上两张图片后续会再次进行解释!!!现在只需简单了解$_COOKIE取数据的作用即可。
五、总结
ASP(一种服务器端脚本编写环境,它允许开发者在HTML页面中嵌入脚本代码,用于生成动态Web内容。):
request (全部接受)
request.querystring (接受get)
request.form (接受post)
request.cookie (接受cookie)
PHP(一种服务器端脚本语言,主要用于创建动态网页和Web应用程序,能够生成动态网页内容、处理表单数据、操作数据库等,支持多种数据库,如MySQL、PostgreSQL等,并且与Apache、IIS等服务器兼容):
$_REQUEST (全部接受)
$_GET $_POST (接受post)
$_COOKIE (接受cookie)$_GET 不是获取请求携带的数据,而是获取查询参数数据。
不同的开发框架,提取http请求数据的写法或者函数不同
以上为个人在学习时的理解,若有错误,欢迎大家前来评论指正哦!!!