今天参加了长城杯,对于一个才入门不久的ctf小白来说实在是艰难。这篇文就记录一下自己学ctf长城杯web题的学到的一些知识吧。
首先,用burpsuite时,不能简单的把GET改成POST,POST的请求头中多了Content-Type、Content-Length(请求正文的长度)字段,同时还有请求正文,比如username=ctf,而GET没有,所以改成POST时应该添加这两个字段,不添加可能不会得到我们想要的服务器返回内容。接下来说说Content-Type。举个例子更容易明白:
Content-Type: application/x-www-form-urlencoded
username=johndoe&password=secret(请求正文)
它是用来定义请求正文的规则:具体来说,`application/x-www-form-urlencoded` 表示请求主体中的数据以键值对的形式存在,键和值之间用等号(=)分隔,不同键值对之间用与号(&)分隔。这种数据格式类似于HTML表单的提交方式,同时请求正文传到服务器时会进行url编码(%+数字)。
至于为什么GET方法没有这两个字段,POST方法需要这两个字段,最主要原因时这两个方法的“初衷”不同。GET主要用于向服务器请求数据,所以没有请求正文,参数的值都在URL中传递,如?username=ctf,没有正文自然也就不需要这两个字段。
那么怎么解决GET-->POST方法的转换呢?而且这道题要求重复发多次才可以,当然可以用POSTMAN,但是这里我们介绍一种新方法,采用curl命令和.bat批处理文件解决。
注意括号要一个在上一行,一个在最后一行,不然过不去。
最后在cmd中运行即可,
之后我们会根据题目得到一个图片,这时题目线索告诉我们,图片里隐藏着压缩文件。在Linux系统中有很多处理文件的命令,这里就在linux中解决。
使用binwalk命令(binwalk 是一个用于分析和提取嵌入在二进制文件中的数据的命令行工具,以查找隐藏在其中的文件、压缩包、加密数据等。)
最左边的数据是偏移量,可以理解为在37416位置找到了7z的压缩包(91位置可以理解为解释这个图片的文件,不是我们需要的隐藏压缩文件,具体是干啥的我也不太懂),这时我们需要提取。
使用dd命令进行提取(`dd` 命令的主要功能是按照指定的参数从一个文件复制数据到另一个文件),这时我们把这个压缩文件复制到桌面的文件夹即可。
- `if`(input_file):指定输入文件(源文件)的路径。
- `of`:指定输出文件(目标文件)的路径。
- `bs`:指定块大小,用于指定每次读取和写入的数据块大小。
- `skip`:指定要跳过的输入文件中的块数。
最后,用7-zip解压缩即可,打开之后会发现一段php代码,之后就触及到一些更深的知识了,搞懂以后再说吧。