整理


整理(web)

0X01(签到题)

链接

右键看源码,得到flag。

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

根据给出的源码的意思,要提交的a不等于QNKCDZO,还要满足 $md51 == $md52,这里不是要md5值完全一样,因为比较时用的是松散比较==,QNKCDZO的md5值为0e830400451993494058024219903391,这里因为是==的比较只比较两个操作数的“值”是否相等,而无论类型是否相同。如果比较一个整数和字符串,则字符串会被转换为整数。如果比较两个数字字符串,则作为整数比较。字符串转换为整数时,是从左到右,直到遇到非数字字符为止。也就是说 ‘123abc456’ 会被转换成 123,而不是 123456。另外字符串开始的空格会被忽略,比如 ‘   234abc’ 转换为 234。这里它的md5第二位是e,也就是比较只比较第一个数字0,找一个md5值符合第一位为0,第二位为字母的就行。

知识点:
  1. PHP

  2. 松散比较

0X03(签到2)

链接

源码:

<html>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
尚未登录或口令错误<form action="./index.php" method="post">
    <p>输入框:<input type="password" value="" name="text1" maxlength="10"><br>
    请输入口令:zhimakaimen
    <input type="submit" value="开门">
</form>

</html>

让输入zhimakaimen,注意到maxlength="10",所以通不过,F12修改一下就行。

0x04(这题不是WEB)

链接

讲真,这题真不是web,把图片保存到本地,记事本打开得到flag,算是隐写。==。

0X05(单身二十年)

链接

burp suite拦截发到repeater,查看响应,flag就在里面。

<script>window.location="./no_key_is_here_forever.php"; </script>
key is : nctf{yougotit_script_now}

跳转过程地址栏隐约看到了search.php,就怀疑有其他网页,但是一闪而过,所以burp截住看。上面是search那个网页的源码。可以看出直接重定向到no_key_is_here_forever.php了,flag也就在里面。

window.location 对象用于获得当前页面的地址 (URL),并把浏览器重定向到新的页面

知识点:burp suit使用。

0X06(php decode)

直接给出的源码:

<?php
function CLsI($ZzvSWE) {

    $ZzvSWE = gzinflate(base64_decode($ZzvSWE));

    for ($i = 0; $i < strlen($ZzvSWE); $i++) {

        $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);

    }

    return $ZzvSWE;

}eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));?>

这不是php嘛,不过最后eval()函数用的不对,改成echo才能输出啊。我是直接放虚拟机里面访问得到的。后来知道有在线php代码测试这是链接

eval() 函数可计算某个字符串,并执行其中的的 JavaScript 代码。

知识点:php

0X07(单身一百年也没用)

链接

burp截取,发送repeater,查看响应。

知识点:302重定向。

0X08(Download~!)

链接

源码:



<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Game 19</title>
<link href="templatemo_style.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="templatemo_container">
    <div id="templatemo_header">
        <div id="website_title">

        </div>
    </div> 

    <div id="templatemo_menu">
        <ul>
            <li><a href="#" class="current">Tips</a></li>
            <li><b>down</b></li>
        </ul> 
    </div>  

    <div id="templatemo_content_wrapper">

        <div id="templatemo_content">

            <div class="content_title_01">听会歌吧</div>
            <div class="horizontal_divider_01">&nbsp;</div>
            <div class="cleaner">&nbsp;</div>

            <p>为了让大家更轻松的比赛,为大家准备了两首歌让大家下载</p>

            <p><a href="download.php?url=eGluZ3hpbmdkaWFuZGVuZy5tcDM=" target="_blank">星星点灯</a></p>
            <p><a href="download.php?url=YnV4aWFuZ3poYW5nZGEubXAz" target="_blank">不想长大</a></p>


             <div class="cleaner">&nbsp;</div>
        </div>
        <div class="cleaner">&nbsp;</div>
    </div>

    <div id="templatemo_footer">

    </div>
</div>
</body>
</html>

点那两首歌的链接可以下载,看源码,发现下载链接.

<p><a href="download.php?url=eGluZ3hpbmdkaWFuZGVuZy5tcDM=" target="_blank">星星点灯</a></p>
<p><a href="download.php?url=YnV4aWFuZ3poYW5nZGEubXAz" target="_blank">不想长大</a></p>

这里url=?说明了下载的东西,可以发现是base64加密过的,复制后base64decode验证是base64,但是要改为什么(下载什么)呢?他说了想下什么下什么,把download.php下载下来看看(把download.php经过base64加密后替换掉原来url=后面的字符串)。得到这个

??<?php
error_reporting(0);
include("hereiskey.php");
$url=base64_decode($_GET[url]);
if( $url=="hereiskey.php" || $url=="buxiangzhangda.mp3" || $url=="xingxingdiandeng.mp3" || $url=="download.php"){
    $file_size = filesize($url);
    header ( "Pragma: public" );
    header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
    header ( "Cache-Control: private", false );
    header ( "Content-Transfer-Encoding: binary" );
    header ( "Content-Type:audio/mpeg MP3");
    header ( "Content-Length: " . $file_size);
    header ( "Content-Disposition: attachment; filename=".$url);
    echo(file_get_contents($url));
    exit;
}
else {
    echo "Access Forbidden!";
}
?>

剩下的一样来就行了。

0X09(MYSQL)

链接

根据提示查看robots.txt,如下:

别太开心,flag不在这,这个文件的用途你看完了?
在CTF比赛中,这个文件往往存放着提示信息

TIP:sql.php

<?php
if($_GET[id]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $id = intval($_GET[id]);
  $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }
}
?>

根据提示需要访问sql.php,同时需要提供参数id。这里关键是intval()函数。intval()将变量转成整数类型。而且id!=1024,所以1024.1就可以了。

知识点:

  1. robots.txt
  2. intval()函数

###0X10()


文章作者: LANVNAL
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 LANVNAL !
 上一篇
XSS XSS
2017-03-11 LANVNAL
下一篇 
各种编码整理 各种编码整理
整理一些CTF中常用的编码。 1.ASCII编码 —ascii码表 —在线转换 2.Base64/32/16编码—在线转换(b64)—在线1/在线2 3.Quoted-printable编码 4.XXencode编码—
2017-02-08
  目录