ISCC2019比赛writeup(持续更新)
Misc
1.
下载附件显示如下:
看了半天像是ascll码,但是有的已经超出范围了。
然后又觉得以0开头的是八进制的数,先进制转换。发现一段字符串看着像base64加密的
解密得到flag
Web
1.
打开链接发现是一个登录界面。马上想到暴力**。可是这里还有验证码,所以就很尴尬了
这里我找到了一个类似的比赛题目:https://blog.****.net/dongyanwen6036/article/details/77921407
里面提到发现&vcode= 和PHPSESSID= 后面的数据删了就绕过了验证码(验证码存在SESSION中,后台校验验证码时未判断是否存在SESSION)
所以我想这里应该是类似的情况,所以祭出我的burpsuite吧
删除这里的两个数据,查看返回页面,居然确实是密码错误而不是验证码错误。事实证明暴力**可行了
最坑爹最想不到的是数字密码居然是。。。996
果然程序员跟web狗最终都是要进ICU的啊!!!
2.
打开链接发现有php代码显示如下:
源代码:
<?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