引言
今天我们来解 Web 渗透 ( 渗透测试 ) 的题目,
在这之前,你需要先初步了解 HTTP 以及它的许多请求方法 。
这边就简单讲 HTTP 两个常用请求方法 GET, POST ,
以及今天解题用的一个额外方法 HEAD 。
GET
这个方法主要用於一般读取网页,当你不需要对服务器传送什麽参数时,
主要都是用 GET ,但它也可以传送参数,只是能传送的资料少,
而且资料会直接在网址中看见。
( 以 picoCTF 某页面为例,
https://play.picoctf.org/practice/challenge/132?category=1&page=1
网址後会接上由 ?
开头的一串资料,资料间由 &
分隔,
这明显是 GET 请求,且资料是 category=1 、 page=1 ,
从字面上可以看出这个请求希望带到「第1个分类」与「第1页」 )
POST
当你需要传送较大量资料时,通常会使用 POST 请求,
它会将资料以「表单」形式送给服务器,诸如「登入」、
「填表单」、「线上测验」等等,几乎都是以这种请求完成,
POST 请求的资料不会在网址中被看到,而且传送资料大小无限制。
HEAD
这个请求其实较没那麽常用,它跟 GET 非常类似,
但是 GET 会把请求的网页送过来 ( 你才能看到请求的页面 ) ,
HEAD 则不会,它只会把网页的档头资讯传过来,让你知道请求内容的大小等资讯,
因此 HEAD 请求常被用在请求内容相当大时,
或是你需要短时间内发出许多请求,来确认内容中一些资讯的时候。
更多资讯可以看看我分享的维基百科连结,或是找找关於 HTTP 的资讯,
基本上想要解这个主题的题目一定必须对 HTTP 有基本了解。
Web Exploitation / GET aHEAD
这题的标题是有玄机的, get ahead
原来的意思是 获取成功
,
但同时也暗示 get a head
,希望你用 HEAD 请求来解题,才能「获取成功」。
题目给了一串网址,直接点进去会看到一组按钮,一个按了背景变蓝,一个按了背景变红。
通常拿到网页第一件事,就是按下 F12 ,开启开发者工具 (限定 Google Chrome) ,
你可以从中找到许多网页的资讯,但是里面并没有可用的 flag 线索。
其实从题目标题下手就行了,我们对服务器发出 HEAD 请求吧!
但是要怎麽做呢?
我们必须写程序来对这个网页服务器发出请求, Python 就是相当适合的工具:
import requests
r = requests.head('http://mercury.picoctf.net:45028/')
print(r)
print(r.headers)
Requests 是 Python 中最常用来处理 HTTP 的函式库,
其中它也可以处理 HTTP 请求。
r = requests.head('http://mercury.picoctf.net:45028/')
代表对该网址发出 HEAD 请求,并把结果回传给 r 。
print(r.headers)
可以把请求得到的档头印出来。
执行会得到:
<Response [200]>
{'flag': 'picoCTF{r3j3ct_th3_du4l1ty_775f2530}', 'Content-type': 'text/html; charset=UTF-8'}
原来题目将 flag 嵌在 HEAD 请求的档头中。
>>: 爬虫怎麽爬 从零开始的爬虫自学 DAY26 python网路爬虫开爬7-规模扩大
接续昨天的基本语法,今天将主要集中在「集合」的内容整理。 范例程序主要来自於W3Schools。 集...
昨天我们学完了按钮,我们今天来学切换按钮。 正文 没错这这个Toogle就长得跟设定里面看到的一模模...
在Two Sum 中 我们一开始最初的想法是用2次的loop检查,那换做这3 Sum我们当然可以用三...
Day 25 - HBuilder X 产生 apk 使用 HBuilder X 来开发手机端应用,...
昨天晚上完成了建立信用卡付款订单的主要逻辑,在操作购物车,进到结帐页面後,填写完收件人资料,按下结帐...