日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > php >内容正文

php

XCTF-高手进阶区:PHP2

發(fā)布時間:2023/12/31 php 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF-高手进阶区:PHP2 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

XCTF-高手進階區(qū):PHP2

目標:

Writeup

(1)首先我們用dirsearch.py進行網(wǎng)站目錄搜索


(2)我們發(fā)現(xiàn)有個index.php,我們訪問一下,沒有結果...

那么我們看看能否看看該網(wǎng)頁php地源碼,這里用到了.phps

.phps后綴釋義: phps文件就是php的源代碼文件。 通常用于提供給用戶(訪問者)查看php代碼,因為用戶無法直接通過Web瀏覽器看到php文件的內(nèi)容,所以需要用phps文件代替
(3)于是我們訪問index.phps,看到下圖所示:


(4)好的,接下來我們來分析可以獲得key值即flag值的核心源碼
  • 第一步:觀察源碼
not allowed!"); exit(); } $_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") { echo "Access granted! "; echo "Key: xxxxxxx "; } ?> Can you anthenticate to this website?
  • 第二步:我們需構造id=admin,瀏覽自動對id值進行一次解碼,結果還是admin
$_GET[id]=urldecode(admin);//這里的admin是瀏覽器對id值自動進行一次解碼后的值 if("admin"=="admin")$_GET[id]="admin"; if("admin"=="admin")//true

這樣就OK了,我們來測試一下:

嗯?這是為什么呢?難道后端代碼對admin字符進行了過濾?不讓傳admin字符?

ctrl+U看到完整php代碼是:
<?php if("admin"===$_GET[id]) {echo("<p>not allowed!</p>");exit(); }$_GET[id] = urldecode($_GET[id]); if($_GET[id] == "admin") {echo "<p>Access granted!</p>";echo "<p>Key: xxxxxxx </p>"; } ?>Can you anthenticate to this website?

先嘗試了0==admin返回true,但是失敗了,看來可能只能admin==admin才能輸出flag?,但又要不滿足"admin"===$_GET[id],該如何?

行吧,那我們嘗試一下對admin進行url編碼吧
  • 第三步:再次構造payload
    注意:瀏覽器在上傳數(shù)據(jù)時,會對參數(shù)值進行一次解碼(與php代碼無關,是瀏覽器自身會解碼一次)
    admin第一次url編碼:%61%64%6D%69%6E
我們url傳參時: $_GET[id]=urldecode(admin);//這里的admin是瀏覽器對id值自動進行一次解碼后的值 if($_GET[id]=="admin")$_GET[id]="admin"; if("admin" == "admin")//true

由上面分析的代碼可以知道,%61%64%6D%69%6E經(jīng)過瀏覽器的一次自動解碼,變成admin,之后又當作id的值傳入代碼中,經(jīng)過urldecode,admin還是admin,服務器后端依舊會過濾admin

  • 第四步:因此,我們需要二次編碼,瀏覽自動對id值進行一次解碼,結果id在傳輸過程中變?yōu)閕d=%61%64%6D%69%6E
    admin二次編碼值:%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45
$_GET[id]=urldecode(%61%64%6D%69%6E);//這里的%61%64%6D%69%6E是瀏覽器對id值自動進行一次解碼后的值 if($_GET[id]=="admin")$_GET[id]="admin";//這里的admin是php代碼中urldecode函數(shù)對%61%64%6D%69%6E進行解碼的結果 if("admin" == "admin")//true

這樣,%61%64%6D%69%6E就不會被過濾了


(6)最后:我們訪問

http://111.198.29.45:41202/?id=%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45

注:下圖中原本是輸入的%25%36%31%25%36%34%25%36%44%25%36%39%25%36%45,因為瀏覽器自動一次解碼變成了%61%64%6D%69%6E

注:此題%2561dmin也可以,一次解碼后為%61,二次解碼后為a。
%2561=%25%36%31,也可以看出,解碼只會解%后面的兩位數(shù),其它數(shù)值沒有%不解碼

創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎

總結

以上是生活随笔為你收集整理的XCTF-高手进阶区:PHP2的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。