baby杯web wp

在这里插入图片描述
哈哈哈哈哈,这是我第一次进前三十的比赛,复现一下

web1

在这里插入图片描述
打开是个这个,
在这里插入图片描述
查看源代码
在这里插入图片描述
打开是个gitHub的弱口令密码库
在这里插入图片描述
用bp,抓包爆破即可
在这里插入图片描述

登陆即可查看flag

web2

这是一道代码审计,我就不截图了
index.php存在⼀个任意的php⽂件包含:

$want = addslashes($_GET['feng']);
$want = $want==""?"index":$want;
include('files/'.$want.".php");

然后存在一个安装文件

<?php
header('Content-Type:text/html;charset=utf-8');
if(file_exists("installLock.txt")){
    echo "你已经安装了ctfshowcms,请勿重复安装。";
    exit;
}

echo "欢迎安装ctfshowcms~"."<br>";


$user=$_POST['user'];
$password=md5($_POST['password']);
$dbhost=$_POST['dbhost'];
$dbuser=$_POST['dbuser'];
$dbpwd=$_POST['dbpwd'];
$dbname=$_POST['dbname'];
if($user==""){
    echo "CMS管理员用户名不能为空!";
    exit();
}
if($password==""){
    echo "CMS管理员密码不能为空!";
    exit();
}
if($dbhost==""){
    echo "数据库地址不能为空!";
    exit();
}
if($dbuser==""){
    echo "数据库用户名不能为空!";
    exit();
}
if($dbpwd==""){
    echo "数据库密码不能为空!";
    exit();
}
if($dbname==""){
    echo "数据库名不能为空!";
    exit();
}
// 连接数据库
$db = mysql_connect ( $dbhost, $dbuser, $dbpwd )  or die("数据库连接失败");

// 选择使用哪个数据库
$a = mysql_select_db ( $dbname, $db );
// 数据库编码方式
$b = mysql_query ( 'SET NAMES ' . 'utf-8', $db );

if(file_exists("ctfshow.sql")){
    echo "正在写入数据库!";
}else{
    die("sql文件不存在");
}

$content = "<?php
\$DB_HOST='".$dbhost."';
\$DB_USER='".$dbuser."';
\$DB_PWD='".$dbpwd."';
\$DB_NAME='".$dbname."';
?>
";


file_put_contents(ROOT_PATH."/data/settings.php",$content);
echo "数据库设置写入成功!~"."<br>";

$of = fopen(ROOT_PATH.'/install/installLock.txt','w');
if($of){
    fwrite($of,"ctfshowcms");
}
echo "安装成功!";

思路是包含这个安装文件,绕过开头的安装锁
然后使用自己的mysql,连接他,然后进行文件读取
离谱的是我忘了我mysql的账号和密码…
存在⼀个数据库任意连接得问题,可以构造⼀个恶意的mysql客户端来读取任意⽂件。参考⽂章
然后就是下载脚本 脚本地址

在这里插入图片描述
脚本结尾改成自己要读取的文件
然后端口就是3307别管,好像是用来读取的
先运行脚本,在连接数据库
然后payload如图,输入端口也是3307,反正不能是3306
在这里插入图片描述
flag就接收到了
在这里插入图片描述

web3

打开是一个cms的安装就一直安装就完事了
在这里插入图片描述
然后就参考这篇文章吧参考
数据表前缀修改x’);@eval($_POST[cmd])😭’
相当于上传webshell,再拿蚁剑连即可
在这里插入图片描述

我就截个图,怕以后想不起来

web4

error_reporting(0);

class fileUtil{

    private $name;
    private $content;


    public function __construct($name,$content=''){
        $this->name = $name;
        $this->content = $content;
        ini_set('open_basedir', '/var/www/html');
    }

    public function file_upload(){
        if($this->waf($this->name) && $this->waf($this->content)){
            return file_put_contents($this->name, $this->content);
        }else{
            return 0;
        }
    }

    private function waf($input){
        return !preg_match('/php/i', $input);
    }

    public function file_download(){
        if(file_exists($this->name)){
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment; filename="'.$this->name.'"');
            header('Content-Transfer-Encoding: binary');
            echo file_get_contents($this->name);
        }else{
            return False;
        }
    }

    public function __destruct(){

    }

}

$action = $_GET['a']?$_GET['a']:highlight_file(__FILE__);

if($action==='upload'){
    die('Permission denied');
}

switch ($action) {
    case 'upload':
        $name = $_POST['name'];
        $content = $_POST['content'];
        $ft = new fileUtil($name,$content);
        if($ft->file_upload()){
            echo $name.' upload success!';
        }
        break;
    case 'download':
        $name = $_POST['name'];
        $ft = new fileUtil($name,$content);
        if($ft->file_download()===False){
            echo $name.' download failed';
        }
        break;
    default:
        echo 'baby come on';
        break;
}

这是一个文件上传、
这里有个switch弱比较
让a=0就行
上传一个名为.user.ini
内容为auto_prepend_file=a.png
然后在上传个a.png 的一句话
然后用蚁剑连就行
文件地址在这,然后连就行
http://8c90e2ea-fe4a-48cc-9294-4fd428f456d6.challenge.ctf.show:8080/var/www/upload

在这里插入图片描述

web5

在这里插入图片描述
题目是这样的
题目设置了open_basedir,所以我们写文件和include都只能限制在该目录下。文件名和内容都有长度限制。
但是我们发现只要post传一个ctfshow就可以使用include函数,那我们试试可不可以使用data伪协议呢。
因为有长度限制我们可以这样写

file_name=data:,<?=`ls`;

要用url编码,
在这里插入图片描述
然后吧ls换成nl * 就行了
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值