ctf刷题

RandomNumber

php伪随机

在这里插入图片描述
爆破得备份文件
在这里插入图片描述
然后 发现源码
得知 为php_srand()和php_rand()的锅
随机数并非真正的随机

根据网上资料
佬的介绍

下载了php_mt_seed工具
然后根据第一个数 就跑出来了0-100间的种子
在这里插入图片描述
再在本地写程序预测
在这里插入图片描述
然后根据后两个数确定了
本次会话的答案
发送过去得到了flag
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

So_Easy

<?php
error_reporting(0);
highlight_file(__FILE__);
include "flag.php";
$login = $_GET['id'];
if(!@isset($login['s3c'])||$login['s3c'] != @md5($_SESSION['flag'])){
    die('嗯...怎么不对呢?');
}else{
$unserialize_str = $_POST['s3c'];
$data_unserialize = unserialize($unserialize_str); 
if($data_unserialize['user'] == 'admin' && $data_unserialize['password']=='hahahahahahaha')
{     
     print($flag);
}
else {
    die('咱就是说大漏特漏!');
}}

在这道题里,难到的是
l o g i n [ ′ s 3 c ′ ] ! = @ m d 5 ( login['s3c'] != @md5( login[s3c]!=@md5(_SESSION[‘flag’]
这个后面的怎么知道是什么值

最后的最后:
在这里插入图片描述
在这里插入图片描述
可见,他没开启session
在这里插入图片描述
那不就是说@md5($_SESSION[‘flag’]根本和服务器就没啥关系,服务器就没有分配session,
在本地var_dump()一下,直接就出来了。
后面的显然一个小序列化:

$a=['user'=>'admin','password'=>'hahahahahahaha'];
echo urlencode(serialize($a));

然后就得到flag
在这里插入图片描述

readMMMEEE

任意文件读取

在这里插入图片描述
在这里插入图片描述
当我们把/cancanneed?img=./static/image/111.jpg写进url并且能够进行访问时就应该明白 这是任意文件读取

此处首先有个 ./ 这个./就表明了 static就是根目录
还有我们可以往后面加无数个…/ 因为根目录的…/就是根目录
还有图片111.jpg是个图片而不是文件夹,不能cd 111.jpg的,也就是说不能直接往111.jpg后面加…/的
在这里插入图片描述
在这里插入图片描述

最终payload:
在这里插入图片描述

ez_php

extract函数存在的问题 变量覆盖

在这里插入图片描述
extract变量覆盖问题
在这里插入图片描述

在这里插入图片描述
data伪协议
在这里插入图片描述

最后payload:

data=1&flag=data:text/plain,1

在这里插入图片描述

SSTI

学习博客
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值