2018.7.21学习笔记

web试题解析

1.md5加密

<?php 
$md51 = md5('QNKCDZO'); 
$a = @$_GET['a']; 
$md52 = @md5($a); 
if(isset($a))
{ 
    if ($a != 'QNKCDZO' && $md51 == $md52) 
         { echo "nctf{*****************}"; } 
    else { echo "false!!!"; }
} 
else{echo "please input a";}
?>

这道题由$_GET可知,是要向地址栏里添加a,由题知a不等于QNKCDZO,但是经过md5加密后的1和2要相等,而md51等于md5加密过的QNKCDZO,而md52等于md5加密过的a,
即:
md51=md52
md52=a
md51=md5[QNKCDZO]
所以md5a=md5[QNKCDZO]
但是a!=QNKCDZO
这样看来,这道题是不可能的,但是我们查看一下百度,发现:md5(‘QNKCDZO’)=’0e830400451993494058024219903391’
然而,在php中==号为弱比较,’0e’开头剩下的全为数字不管数字是多少==恒成立,因为’0e***’==0,所以只要md5a的结果是以0e开头的字符串,就可以满足题目中的条件,所以寻找一个满足这样的字符串就可以了,找到对应a的值,把它添加到地址栏里,运行即可的结果。
链接:php md5()函数
php运算符
2.上传成功也不一定得到flag哦!!
这里写图片描述
我们点开题目链接:
这里写图片描述
根据题目的提示我们决定看一下源代码:
这里写图片描述
在源代码中我们可以看到这样一串代码:

<script>
            function check(){
                var filename=document.getElementById("file");
                var str=filename.value.split(".");
                var ext=str[1];
                if(ext==='jpg'){
                    return true;
                }else{
                    alert("请上传一张JPG格式的图片!");
                    return false;
                }
                return false;
            }
        </script>

从这串代码可知,把我们传上的图片名称分割成字符串数组,以“.”分割字符串,要求,数组[1]必须是jpg,即第一个“.”之后是jpg,所以我们只要保证上传的图片名称是以这种格式就可以,但不能直接是jpg格式的。
链接:JavaScript split() 方法
3.密码爆破
这里写图片描述
我们打开题目链接:
这里写图片描述
发现验证码只能使用一次,所以为了能够破解密码,我们需要绕过验证码,而我们所知道的绕过验证码的方式是验证码为空,即不输入验证码,我们抓包爆破密码:
这里写图片描述
由上图可知:vcode为验证码,现在验证码为空,我们已绕过验证码,开始破解密码:
1.鼠标右击,点击send to Intruder(发送到入侵者)
这里写图片描述
把密码添加为爆破,爆破模式选择sniper,然后点击payloads,插入字典,因为题目告诉密码为四位数字,所以可以直接在payloads type里选择numbers,选择从1000到9999,step则选择1:
这里写图片描述
最后点击(最上边一栏)Intruder—-start attack,即开始攻击:
这里写图片描述
通过Length来判断爆破是否成功,由图可知,其他的都是307,而有一个大的为331,所以这个应该是正确的,点击这一行,弹出的运行中,寻找flag:
这里写图片描述
4./x00

 if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

题目里的$_GET是要想地址栏里传入数组nctf,

  • 有第一个判断知道,nctf里必须是1-9的数字(即@ereg ("^[1-9]+$", $_GET['nctf'])返回值不等于false),
  • 而第二个判断则知#biubiubiu要在nctf里出现(即strpos ($_GET['nctf'], '#biubiubiu')的返回值不等于false,
    上述两者仿佛是矛盾的,但是我们可以运用%00 进行截断,所以在数字的后面加上%00,再加上#biubiubiu,而“#”这个字符在地址栏里输入的它URL编码之后的结果是%23,即可以输入nctf=11%00%23biubiubiu。
    链接:特殊字符为什么要进行url编码
    URL中编码URL特殊字符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要下载和安装PyCharm 2018.3.7,可以通过CSDN网站进行操作。CSDN是一个知名的技术社区,提供了许多软件下载资源。首先,打开CSDN的官方网站,并在搜索框中输入"PyCharm 2018.3.7"。点击搜索按钮后,将得到与该版本相关的搜索结果。 在搜索结果中,挑选一个可靠的结果,可以选择根据下载量、评价、评论等进行判断。点击该链接,将进入软件下载页面。在该页面上,可以看到软件的详细介绍、下载按钮以及用户的评价等信息。 点击下载按钮,将开始下载PyCharm 2018.3.7的安装文件。安装文件通常是一个可执行文件(.exe或.dmg),根据操作系统的不同,会有所区别。下载完成后,打开该文件并按照安装向导的指示进行安装。 在安装过程中,可以选择安装位置、添加快捷方式等。根据自己的需求进行设置,一般来说,选择默认设置即可。安装完成后,可以在桌面或开始菜单中找到PyCharm的快捷方式。 双击快捷方式,将打开PyCharm。在首次打开时,可能需要进行一些初始化配置,如选择主题、设置语言等。完成这些配置后,可以开始使用PyCharm进行Python开发。 总的来说,通过CSDN下载和安装PyCharm 2018.3.7相对简单,只需打开CSDN网站,搜索并下载安装文件,按照向导进行安装即可。PyCharm是一款功能强大的Python集成开发环境,可以提高开发效率和代码质量,适合初学者和专业开发者使用。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值