南邮ctf平台wp

既然都学了一点web了,那就顺便做pwn累了就搞搞web,听说这是一个很入门的web题的刷题平台,本菜鸡就边看wp边操作,假装自己学会了web

WEB

签到题

F12就完事了,直接能在html代码里面看到flag

md5 collision

<?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";}
?>

这题涉及到的知识点是md5碰撞,涉及了一个知识盲区,去查了一波

在PHP中,@被称为错误控制操作符(error control operator),前置@符号的表达式产生的任何错误都将被忽略

PHP的比较操作符主要有两类——松散比较和严格比较,于是就有了equal(==)Identical(===)两种相等,主要区别在于前者会在比较前根据上下文对操作数进行类型转换(type juggling)而后者不会。

在这题中只要传入一个字符串加密后是0e开头的,在比较这个字符串时,php会将0e这类字符串识别为科学计数法,0无论多少次都等于0,就能让两者相等。

单纯解这题的话可以直接百度“oe开头的md5”就能搜到了,很真实

或者可以通过写脚本生成一串0e开头,同时其他30位为数字的md5,然后解出字符串

签到2

这题是在本地的浏览器里直接改前端代码,可输入的长度增大,足以输入“zhimakaimen”后就可以出flag了,这题大概是想告诉我们前端的代码在本地可以临时修改吧,我估计还能用一些工具,比如burp之类的,直接向服务器传也行

1540730370530

这题不是WEB

他都说不是web咯,那我想就应该是图片隐写了,一开始以为是gif逐帧出flag,没想到后面直接拖进文本编辑器,然后搜索“nctf”关键词就找到flag了

层层递进

这题可以说是考眼力了,真·层层递进,一直找到最后一个页面里面的注释才看到flag

1540732001405

AAencode

一种JavaScript的加密方法,直接在浏览器控制台输入就可以了,但有个语法错误需要去找出来修正,才能正确弹出窗口

1540793068274