[De1CTF 2019]ShellShellShell复现

本文详细介绍了De1CTF 2019比赛中关于ShellShellShell的挑战,涉及SQL注入、PHP反序列化漏洞的利用过程。通过注册、SQL注入发现index.php~,然后利用包含漏洞,接着通过源码分析找到SQL注入点,使用get_column进行测试。进一步发现正则表达式注入,结合INSERT INTO注入,利用SSRF和SOAP触发反序列化。最后,通过文件上传漏洞获取内网shell并读取flag。
摘要由CSDN通过智能技术生成

[De1CTF 2019]ShellShellShell

在这里插入图片描述

这里是一个md5截断,直接拿脚本跑一下即可

# -*- coding: utf-8 -*-
#在python2环境下执行python2 1.py '94d20' 0即可执行
import multiprocessing
import hashlib
import random
import string
import sys


CHARS = string.letters + string.digits


def cmp_md5(substr, stop_event, str_len, start=0, size=20):
    global CHARS

    while not stop_event.is_set():
        rnds = ''.join(random.choice(CHARS) for _ in range(size))
        md5 = hashlib.md5(rnds)

        if md5.hexdigest()[start: start+str_len] == substr:
            print rnds
            stop_event.set()


if __name__ == '__main__':
    substr = sys.argv[1].strip()

    start_pos = int(sys.argv[2]) if len(sys.argv) > 1 else 0

    str_len = len(substr)
    cpus = multiprocessing.cpu_count()
    stop_event = multiprocessing.Event()
    processes = [multiprocessing.Process(target=cmp_md5, args=(substr,
                                         stop_event, str_len, start_pos))
                 for i in range(cpus)]

    for p in processes:
        p.start()

    for p in processes:
        p.join()

如果注册admin会返回用户名不唯一的提示,但是测试了一波后,并不是SQL,扫目录发现了index.php~这种格式的文件

./dirsearch.py -u http://027c9a90-cc75-4715-b399-61e408378d56.node3.buuoj.cn/ -e php -s 0.3 | grep 200

在这里插入图片描述

seay扫一下发现几个漏洞,我们去确认一下是否存在

在这里插入图片描述

首先看包含

在这里插入图片描述

直接白名单写死了,告辞,但是这个白名单也告诉了我们网站有哪些功能

我们注册进入后有一个更新,删除的功能,读了源码后我们发现这个功能正好对应了上面爆出的SQL注入漏洞

源码中可以看到select、insert into、delete、update这几个sql语句,我们先从我们最熟悉的select开始

在这里插入图片描述

这里可以看到调用了一个get_column

在这里插入图片描述

看不懂了,去测试一下

<?php
function get_column($columns){
   
    if(is_array($columns)){
   
        $column = ' `'.implode('`,`',$columns).'` ';
    }
    else{
   
        $column = ' `'.$columns.'` ';
    }
    return $column;
}
$columns = "1' and sleep(5)#";
$column = get_column($columns);
print($column);
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值