[2021铁人赛 Day25] Web Exploitation Web渗透题目 01

  • 引言
    今天我们来解 Web 渗透 ( 渗透测试 ) 的题目,
    在这之前,你需要先初步了解 HTTP 以及它的许多请求方法

    这边就简单讲 HTTP 两个常用请求方法 GET, POST
    以及今天解题用的一个额外方法 HEAD

    1. GET
      这个方法主要用於一般读取网页,当你不需要对服务器传送什麽参数时,
      主要都是用 GET ,但它也可以传送参数,只是能传送的资料少,
      而且资料会直接在网址中看见。
      ( 以 picoCTF 某页面为例,
      https://play.picoctf.org/practice/challenge/132?category=1&page=1
      网址後会接上由 ? 开头的一串资料,资料间由 & 分隔,
      这明显是 GET 请求,且资料是 category=1 、 page=1 ,
      从字面上可以看出这个请求希望带到「第1个分类」与「第1页」 )

    2. POST
      当你需要传送较大量资料时,通常会使用 POST 请求,
      它会将资料以「表单」形式送给服务器,诸如「登入」、
      「填表单」、「线上测验」等等,几乎都是以这种请求完成,
      POST 请求的资料不会在网址中被看到,而且传送资料大小无限制。

    3. HEAD
      这个请求其实较没那麽常用,它跟 GET 非常类似,
      但是 GET 会把请求的网页送过来 ( 你才能看到请求的页面 ) ,
      HEAD 则不会,它只会把网页的档头资讯传过来,让你知道请求内容的大小等资讯,
      因此 HEAD 请求常被用在请求内容相当大时,
      或是你需要短时间内发出许多请求,来确认内容中一些资讯的时候。

    更多资讯可以看看我分享的维基百科连结,或是找找关於 HTTP 的资讯,
    基本上想要解这个主题的题目一定必须对 HTTP 有基本了解。

  • Web Exploitation / GET aHEAD
    https://ithelp.ithome.com.tw/upload/images/20211010/20111429mId5Tv3xv9.png
    这题的标题是有玄机的, get ahead 原来的意思是 获取成功
    但同时也暗示 get a head ,希望你用 HEAD 请求来解题,才能「获取成功」。

    题目给了一串网址,直接点进去会看到一组按钮,一个按了背景变蓝,一个按了背景变红。
    通常拿到网页第一件事,就是按下 F12 ,开启开发者工具 (限定 Google Chrome) ,
    https://ithelp.ithome.com.tw/upload/images/20211010/20111429hTlfpdvmUx.png
    你可以从中找到许多网页的资讯,但是里面并没有可用的 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 请求的档头中。


<<:  {DAY 28} Matplotlib 绘图2

>>:  爬虫怎麽爬 从零开始的爬虫自学 DAY26 python网路爬虫开爬7-规模扩大

Day05 - Python基本语法 Part 2,关於「集合」

接续昨天的基本语法,今天将主要集中在「集合」的内容整理。 范例程序主要来自於W3Schools。 集...

Day 18 - SwiftUI开发学习2(Toggle切换)

昨天我们学完了按钮,我们今天来学切换按钮。 正文 没错这这个Toogle就长得跟设定里面看到的一模模...

Day 06:3 Sum

在Two Sum 中 我们一开始最初的想法是用2次的loop检查,那换做这3 Sum我们当然可以用三...

Day 25 - HBuilder X 产生 apk

Day 25 - HBuilder X 产生 apk 使用 HBuilder X 来开发手机端应用,...

Day 24 - WooCommerce: 建立信用卡付款订单 (下)

昨天晚上完成了建立信用卡付款订单的主要逻辑,在操作购物车,进到结帐页面後,填写完收件人资料,按下结帐...