好久沒打過ctf了,這次打完了才意識到這次比賽的很多題其實都是一些原題或者原題變種或者拼湊起來,但奈何太久沒做過ctf了,跟不上了,太菜了qaq
web6
首先掃一下目錄,存在ds_store資訊洩露和一些路徑
訪問api目錄,提示post引數filename 並提供乙個array,使用postman測試了一下知道提供的引數型別需要為json. 這裡師傅說fuzz出來key為file,value就是檔名,就可以讀檔案了.
通過ds_store獲取一下檔案列表
這裡api/index.php原始碼找不到了,大概意思是不能直接讀fffffaa_not.php檔案,它會檢測檔名中是否存在f字元
(剛開始還以為這裡可以繞過,想歪了,其實不行)
那麼讀hack.php和index.php
檢視原始碼可知這是乙個反序列化,構造poc
但這裡有乙個問題 要過正規表示式 preg_match('/[oc]:\d+:/i', $value, $matches)
需要把payload變成 o:+4:"hack":1:
將payload url編碼一下就能讀到fffffaa_not.php
fffffaa_not.php:
<?php因為preg_match只能接受第二個引數為字串$text = $_get['
jhh08881111jn'];
$filename = $_get['
file_na'];
if(preg_match('
[<>?]
', $text))
if(is_numeric($filename))
else
file_put_contents($path, $text);
?>
提交 jhh08881111jn = shell 暴力繞過preg_match
這裡一開始本地測試的時候windows defender把我寫的shell飛快刪掉了,我還以為沒寫成功...
一看到這道題就知道是用了p師傅無字母無數字webshell文章的思路,立刻去翻了一下
看到這段,給code傳值發現題目php版本是7.0.33,滿足要求
這樣的話 通過同樣的方式(』getyourflag』)()動態呼叫getyourflag函式就好了
直接對getyourflag取反編碼就好了
強網杯 2019 隨便注
1 or 1 1 回顯了所有使用者資訊 union select 1,2 得到回顯 return preg match select update delete drop insert where i inject 過濾了 select update delete drop insert where...
強網杯 2019 隨便注
知識點 原理參考堆疊注入詳解 開啟題目,如圖所示 嘗試 1 union select 1,2 發現select被禁 嘗試堆疊注入 查庫 查表 查1919810931114514表的列名 1 show columns from 1919810931114514 這裡表名使用反引號進行包含 應該就是從1...
強網杯 2019 隨便注
題目 開啟後如下,比較典型的一道sql注入題目 輸入1 發現會返回一些資料,所以可以嘗試一下堆疊注入。堆疊注入 試一下,查詢資料庫 1 show databases 發現可以將資料庫都顯示出來,說明可行 再試試查詢表,回顯兩個表 1 show tables 查詢所有表 然後繼續訪問表中的列 1 sh...