[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);