iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
佛心分享-刷題不只是刷題

一直刷 CTF系列 第 16

一直刷 CTF - Day16

  • 分享至 

  • xImage
  •  

上課紀錄

Path Traversal

Intro

Image

像是類似這樣的網址,如果把 ?file=report.pdf 改成 ?file=../../../../etc/passwd 就有可能得到一些機密資料

How to Happen

Image

常用來被攻擊的路徑

Image

其他可以參考 這邊

防禦方式

  • 強制加上副檔名
    Image
    (可以在後面加上 Null Byte %00 來繞過,但在 php5.4 已經被修掉了)
  • 確認路徑前綴
    Image

Lab - Pathwalker

到網頁之後她會很好心的告訴你 Flag 的位置,然後你可以用 Path Traversal 的方式去找到 Flag 了

Image

Image

Lab - Pathwalker - waf

這題有塞了一個正則表達式的 WAF /^apple|banana|cappo$/ 但其實是有漏洞的,他只要符合

  1. apple 開頭
  2. 包含 banana
  3. 結尾是 cappo

其中一個就算符合 (正確應該是 ^(apple|banana|cappo)$) ,所以就能很輕鬆地繞過了

Image

LFI (Local File Inclusion)

Image

用 include 表示他會自動把檔案 parse ,假設 include 的是 php 就會自動 parse 成 php 的東西 (如果本來某個路徑的東西是不能拿的,就可能可以用 LFI 拿到,就像下面這樣)

Image

parse 之後有可能會讓一些東西不見,就像是註解的內容,這時候可以用 php 偽協議把內容轉成 base64 ,然後再解碼就可以看到原本的內容了

Image

Image

格式: php://filter/{read= / write= / <empty>(自己決定要讀檔還寫檔)}convertor}/resource=<file_path>

convertor: string.rot13, convert.base64-encode, convert.base64-decode, zlib.delate... 參見 這邊

如果有多個 convertor ,就用 | 來串起來

Image

Lab - lfi

將 flag.php 用 base64 列印出來之後再解密就能得到 Flag 了

Image

Lab - lfi2rce

這題要取得在根目錄的 Flag ,直接偷 別人寫好的 webshell 來串起來用就可以了,因為他用的是 eval 所以要用 system 來執行 linux 指令,所以只要在後面加上 &1=system('ls /') 然後 `&1=system('cat {flag名稱}') ,就解出來了~

Image

參考資料


上一篇
一直刷 CTF - Day15
下一篇
一直刷 CTF - Day17
系列文
一直刷 CTF30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言