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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

攻防世界 web高手进阶区 7分题 wtf.sh-150

發(fā)布時間:2023/12/14 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 攻防世界 web高手进阶区 7分题 wtf.sh-150 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

前言

繼續(xù)ctf的旅程
開始攻防世界web高手進階區(qū)的7分題
本文是wtf.sh-150的writeup

解題過程

進來是個論壇

有注冊登錄發(fā)布的文章
嘗試點擊下各個連接
查看源碼和掃描后臺
都沒有發(fā)現(xiàn)

那就注冊試試
并嘗試在注冊登錄發(fā)布里sql注入
無果

不斷嘗試
在展示文章的頁面 post.wtf 下發(fā)現(xiàn)路徑穿越漏洞

  • 如果應(yīng)用程序使用用戶可控制的數(shù)據(jù),以危險的方式訪問位于應(yīng)用服務(wù)器或其它后端文件系統(tǒng)的文件或目錄,就會出現(xiàn)路徑遍歷
  • 攻擊者可以將路徑遍歷序列放入文件名內(nèi),向上回溯,從而訪問服務(wù)器上的任何文件


出現(xiàn)源碼
(看的眼睛生疼。。。)
那第一反應(yīng)搜索flag關(guān)鍵詞

幸運的發(fā)現(xiàn)了
整理下如下

<html> <head><link rel="stylesheet" type="text/css" href="/css/std.css" > </head> $ if contains 'user' ${!URL_PARAMS[@]} && file_exists "users/${URL_PARAMS['user']}" $ then $ local username=$(head -n 1 users/${URL_PARAMS['user']}); $ echo "<h3>${username}'s posts:</h3>"; $ echo "<ol>"; $ get_users_posts "${username}" | while read -r post; do $ post_slug=$(awk -F/ '{print $2 "#" $3}' <<< "${post}"); $ echo "<li><a href=\"/post.wtf?post=${post_slug}\">$(nth_line 2 "${post}" | htmlentities)</a></li>"; $ done $ echo "</ol>"; $ if is_logged_in && [[ "${COOKIES['USERNAME']}" = 'admin' ]] && [[ ${username} = 'admin' ]] $ then $ get_flag1 $ fi $ fi </html>

可以發(fā)現(xiàn)admin登錄就能獲取flag
搜索admin和user
發(fā)現(xiàn)有user文件夾

那就繼續(xù)

可以發(fā)現(xiàn)admin賬號和我們注冊的123賬號
然后下面這一串跟自己注冊賬號抓包對比
發(fā)現(xiàn)是cookie里的token
個么嘗試欺騙

得到flag。。。的一半Flag: xctf{cb49256d1ab48803
啊,果然沒那么簡單

回去繼續(xù)代碼審計
(看得眼睛生疼。。。)
突然想到這個網(wǎng)頁是wtf文件
這個是真沒接觸過
印象里似乎是魔獸世界看到過?
跑遠了。。。

反正盲猜下跟這個有關(guān)
找wtf關(guān)鍵詞
找到一段

整理下

max_page_include_depth=64 page_include_depth=0 function include_page {# include_page pathnamelocal pathname=$1local cmd=[[ ${pathname(-4)} = '.wtf' ]];local can_execute=$;page_include_depth=$(($page_include_depth+1))if [[ $page_include_depth -lt $max_page_include_depth ]]thenlocal line;while read -r line; do# check if we're in a script line or not ($ at the beginning implies script line)# also, our extension needs to be .wtf[[ $ = ${line01} && ${can_execute} = 0 ]];is_script=$;# execute the line.if [[ $is_script = 0 ]]thencmd+=$'n'${line#$};elseif [[ -n $cmd ]]theneval $cmd log Error during execution of ${cmd};cmd=fiecho $linefidone ${pathname}elseecho pMax include depth exceeded!pfi }

發(fā)現(xiàn)服務(wù)器能夠解析并執(zhí)行 wtf 文件
如果還能夠上傳 wtf 文件并執(zhí)行的話,就可以達到控制服務(wù)器的目的
。。。。。。
還得尋找上傳辦法
。。。
哽住了
不會做了
感覺應(yīng)該是尋找注入或上傳后門的代碼
查了查wp

尋找到一個reply功能的代碼如下

function reply {local post_id=$1;local username=$2;local text=$3;local hashed=$(hash_username "${username}");curr_id=$(for d in posts/${post_id}/*; do basename $d; done | sort -n | tail -n 1);next_reply_id=$(awk '{print $1+1}' <<< "${curr_id}");next_file=(posts/${post_id}/${next_reply_id});echo "${username}" > "${next_file}";echo "RE: $(nth_line 2 < "posts/${post_id}/1")" >> "${next_file}";echo "${text}" >> "${next_file}";# add post this is in reply to to posts cacheecho "${post_id}/${next_reply_id}" >> "users_lookup/${hashed}/posts"; }

存在路徑穿越
把用戶名寫在了評論文件的內(nèi)容中
如果用戶名是一段可執(zhí)行代碼,而且寫入的文件是 wtf 格式的
那么這個文件就能夠執(zhí)行我們想要的代碼

那就創(chuàng)建個用戶
在用戶名里寫入后門

${find,/,-name,get_flag2}

然后評論并抓包

上傳個sh.wtf
即修改下post內(nèi)容

這里注意:
%09是水平制表符,必須添加,不然后臺會把后門當(dāng)做目錄去解析
(學(xué)到了!)

然后訪問sh.wtf
獲得了flag2的路徑

那就創(chuàng)建用戶名$/usr/bin/get_flag2
重復(fù)上述步驟
獲得flag2

最終flag:xctf{cb49256d1ab48803149e5ec49d3c29ca}

結(jié)語

前一半flag還行,路徑穿越說實話蠻快就試出來了
后一半就難頂了,代碼審計眼疼,wtf也不了解,后門上傳還是查wp的

知識點

  • 路徑穿越
  • cookie欺騙
  • 代碼審計
  • wtf文件
  • 上傳后門

幾個wp

  • 一個國外大神的wp
  • 神仙系列
  • 神仙題

繼續(xù)努力

總結(jié)

以上是生活随笔為你收集整理的攻防世界 web高手进阶区 7分题 wtf.sh-150的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

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