ISCC2019比赛writeup(持续更新)

Misc

1.

ISCC2019比赛writeup(持续更新)

下载附件显示如下:

ISCC2019比赛writeup(持续更新)

看了半天像是ascll码,但是有的已经超出范围了。

然后又觉得以0开头的是八进制的数,先进制转换。发现一段字符串看着像base64加密的

ISCC2019比赛writeup(持续更新)

解密得到flag

ISCC2019比赛writeup(持续更新)

Web

1.

ISCC2019比赛writeup(持续更新)

打开链接发现是一个登录界面。马上想到暴力**。可是这里还有验证码,所以就很尴尬了

ISCC2019比赛writeup(持续更新)

这里我找到了一个类似的比赛题目:https://blog.****.net/dongyanwen6036/article/details/77921407

里面提到发现&vcode= 和PHPSESSID= 后面的数据删了就绕过了验证码(验证码存在SESSION中,后台校验验证码时未判断是否存在SESSION)

所以我想这里应该是类似的情况,所以祭出我的burpsuite吧

ISCC2019比赛writeup(持续更新)

删除这里的两个数据,查看返回页面,居然确实是密码错误而不是验证码错误。事实证明暴力**可行了

ISCC2019比赛writeup(持续更新)

最坑爹最想不到的是数字密码居然是。。。996

ISCC2019比赛writeup(持续更新)

果然程序员跟web狗最终都是要进ICU的啊!!!

2.

ISCC2019比赛writeup(持续更新)

打开链接发现有php代码显示如下:

ISCC2019比赛writeup(持续更新)

源代码:

<?php
error_reporting(0);
require 'flag.php';
$value = $_GET['value'];
$password = $_GET['password'];
$username = '';

for ($i = 0; $i < count($value); ++$i) {
    if ($value[$i] > 32 && $value[$i] < 127) unset($value);
    else $username .= chr($value[$i]);
    if ($username == 'w3lc0me_To_ISCC2019' && intval($password) < 2333 && intval($password + 1) > 2333) {
        echo 'Hello '.$username.'!', '<br>', PHP_EOL;
        echo $flag, '<hr>';
    }
}

highlight_file(__FILE__);

 

大概意思就是包含了flag.php文件,然后有三个参数,其中value参数的值不能在32到127中间,也就是不能直接用ascll码代替。然后password参数用了intval()方法后要满足两个条件就得到flag。

这里有两个技巧:

(1)chr函数在转换时会自动取模256,所以我们只需要在原本ascii码基础上+256即可

(2)intval()在处理16进制时存在问题,但强制转换时时正常的

所以这个题的payload是:http://39.100.83.188:8001/index.php?value[]=375&value[]=307&value[]=364&value[]=355&value[]=304&value[]=365&value[]=357&value[]=351&value[]=340&value[]=367&value[]=351&value[]=329&value[]=339&value[]=323&value[]=323&value[]=306&value[]=304&value[]=305&value[]=313&password=2332e1

ISCC2019比赛writeup(持续更新)

ISCC2019比赛writeup(持续更新)