传统web应用型内存马
这里是本菜鸡开始学习内存马的起始文章
有关内存马的认知可以看看su18师傅的这篇文章:https://mp.weixin.qq.com/s/NKq4BZ8fLK7bsGSK5UhoGQ
有关tomcat源码分析的文章:Tomcat源码初识一 Tomcat整理流程图_tomcat流程图-CSDN博客
然后这里有一篇总结得特别全得内存马文章:https://paper.seebug.org/3120/
这里放一张文章中的源码分析的初始化流程图:
做个参考对大致流程有个概念
调试的时候我突然发现不应该开启tomcat的自动打开浏览器,这样调试访问前或者访问后的逻辑是才不会那么乱😢
因为他默认是在我们访问后才会去创建实例
Servlet内存马简单demo先写一个简单的demo然后再分析一下原理吧,先看看效果
这里用了使用了tomcat8,tomcat10用那个demo有些类找不到
要看源码的话需要导入对应tomcat版本的依赖
<dependency> <groupId>org.apache.tomcat</groupId> <artif ...
Tomcat中间件内存马
其实前面的传统web应用内存马也是tomcat这部分的,因为它基于tomcat进行分析不过问题不大,别的中间件应该也是有这些基本组件的。
Tomcat-Valve内存马valve就是前面文章中说过的阀门,也就是pipeline(管道)机制,想了解得更加细致一点可以看看这篇文章:https://www.cnblogs.com/coldridgeValley/p/5816414.html,也可以看前文提到的总结大全文章。
这里放一张Valve的运行机制图
原理分析经过前面的学习,现在分析起来还是比较简单的,这里就不自己配一个valve了,因为valve属于容器,需要在server.xml或者context.xml那里配置,看看文章就行,或者像文章里直接用springboot来搭建。
Pipeline定义对应的接口是Pipeline,他的实现类是StandardPipeline,Valve定义对应接口Valve,他的抽象实现类是ValveBase,然后四个容器本身有的阀门为StandardEngineValve,StandardHostValve,StandardContextValve ...
javassist学习
因为看到在缩短payload的时候会用到,赶紧来学习一下,参考文章:https://www.yishuifengxiao.com/2023/04/04/javassist%E5%9F%BA%E7%A1%80%E5%85%A5%E9%97%A8%E7%AC%94%E8%AE%B0/
这是官方文档:http://www.javassist.org/tutorial/tutorial.html
javassist介绍Javassist 是一个开源的分析、编辑和创建Java字节码的类库.;其主要优点在于简单快速. 直接使用 java 编码的形式, 而不需要了解虚拟机指令, 就能动态改变类的结构, 或者动态生成类。
使用前导入jar包
<!-- https://mvnrepository.com/artifact/org.javassist/javassist --><dependency> <groupId>org.javassist</groupId> <artifactId>javassist</artifact ...
内存马前置学习
学内存马前就要来学一学java web三大件的相关原理:Servlet、Filter、Listener
参考文章:https://www.cnblogs.com/jadite/p/16951328.html
ServletServlet是什么Servlet是JavaEE规范(接口)之一;Servlet是运行在服务器(Web容器Tomcat等)上的一个 java 小程序,它用来接收客户端发送过来的请求进行处理,并响应数据给客户端。Servlet及相对的对象,都由Tomcat创建,我们只是使用。
Tomcat就是一个servlet容器
Servlet需要完成3个任务:
接收请求:将客户端发送过来的请求封装成ServletRequest对象(包含请求头、参数等各种信息)
处理请求:在service方法中接收参数,并且进行处理请求。
数据响应:请求处理完成后,通过转发(forward)或者重定向(redirect)到某个页面。
Servlet程序实现
实现Servlet接口,重新service方法
在web.xml或者用注解配置映射
Servlet生命周期
执行 Servlet 构 ...
fastjson反序列化
fastjson介绍官方github地址:https://github.com/alibaba/fastjson
fastjson是阿里巴巴的开源JSON解析库,它可以解析JSON格式的字符串,支持将Java Bean序列化为JSON字符串,也可以从JSON字符串反序列化到JavaBean。
简单例子
用Json的toJSONString方法将pojo类转换成字符串
package org.clown.Test1;import com.alibaba.fastjson.*;import com.alibaba.fastjson.serializer.SerializerFeature;public class Student { private String name; private int age; public Student() { System.out.println("Student构造函数"); } public String getName() { re ...
flask内存马学习
拖了很久终于来看一下flask内存马这个东西了,主要是发现某新生赛week2就要打flask内存马,赶紧来学了😢
介绍内存马就是无文件webshell,这个不多说了,python的内存马就是在网站运行的时候动态注册一个路由用于任意命令执行。
python的内存马通常会配合ssti或者pickle反序列化等手段来使用,主要是为了解决不出网的情况。
低版本内存马先简单写一个ssti漏洞的flask服务
from flask import Flask,request,render_template_stringapp = Flask(__name__)@app.route('/')def home(): person="guest" if request.args.get('name'): person=request.args.get('name') template = '<h2>Hello %s!</h2>' % person ...
APP渗透抓包环境配置
模拟器代理设置这里用雷电模拟器
ipconfig查看一下本机的IP
然后在burp添加一个新的代理
然后模拟器也自定义该ip地址
证书安装这里如果要抓https还需要安装一下burp证书,参考文章:https://blog.gm7.org/%E4%B8%AA%E4%BA%BA%E7%9F%A5%E8%AF%86%E5%BA%93/04.%E7%A7%BB%E5%8A%A8%E5%AE%89%E5%85%A8/06.%E7%A7%BB%E5%8A%A8%E7%AB%AF%E5%90%84%E7%A7%8D%E6%96%B9%E5%BC%8F%E6%8A%93%E5%8C%85/
但是Android 从 7.0 开始,系统不再信任用户 CA 证书,安装证书的方式就麻烦一点
首先访问burp的监听地址下载证书
打开文件管理器可以看到证书
然后用kali里的工具openssl计算证书哈希值
openssl x509 -inform der -subject_hash_old -in cacert.der -noout
将证书名改为<hash>.0
mv cacer ...
NTFS数据流隐写
这是在前文学习mysql提权的时候遇到的利用数据流写文件,以前有点印象但不是很深,这里记录一下。
NTFS数据流介绍在NTFS文件系统中存在着NTFS备用数据流(Alternate Data Streams,简称ADS),这是NTFS磁盘格式的特性之一。每一个文件,都有着主文件流和非主文件流,主文件流能够直接看到;而非主文件流寄宿于主文件流中,无法直接读取,这个非主文件流就是NTFS备用数据流。
ADS的作用在于,它允许一个文件携带着附加的信息。例如,IE浏览器下载文件时,会向文件添加一个数据流,标记该文件来源于外部,即带有风险,那么,在用户打开文件时,就会弹出文件警告提示。再如,在网址收藏中,也会附加一个favicon数据流以存放网站图标。
ADS也被用于一些恶意文件隐藏自身,作为后门。
ADS应用这里写一个隐藏文本来看看,首先创建一个空的example.txt,然后写入ADS,这里写入一个字符串
echo "123" > example.txt:config #这里要用cmd,用powershell会报错
然后直接打开文件还是空的
想要查看ADS的话可 ...
玄机应急响应靶场-第三章
Linux权限维持靶机简介
ssh root@env.xj.edisec.net -p 密码 xjqxwcyc1.黑客隐藏的隐藏的文件 完整路径md52.黑客隐藏的文件反弹shell的ip+端口 {ip:port}3.黑客提权所用的命令 完整路径的md5 flag{md5} 4.黑客尝试注入恶意代码的工具完整路径md55.使用命令运行 ./x.xx 执行该文件 将查询的 Exec****** 值 作为flag提交 flag{/xxx/xxx/xxx}
这里看了一下web目录没什么东西,直接用D盾全盘查杀一下
这里挂载要指定端口,指定端口的形式是这样的:\sshfs.r\username@remote_ip!port\
emmm但是卡住了扫不出来东西
最后是在/tmp目录下发现了一个隐藏文件,里面有python脚本/tmp/.temp/libprocesshider/1.py
flag{109ccb5768c70638e24fb46ee7957e37}
其脚本内容 ...
mysql提权
参考文章:https://www.sqlsec.com/2020/11/mysql.html
权限获取要提权之前首先就要拿到mysql的权限,这里大佬的文章已经说的很详细了,我就记录一些写shell相关的知识
into outfile写shell
需要load_file () 开启 即 secure_file_priv 无限制
可以通过下面命令查看
show global variables like '%secure_file_priv%';
Value
说明
NULL
不允许导入或导出
/tmp
只允许在 /tmp 目录导入导出
空
不限制目录
在 MySQL 5.5 之前 secure_file_priv 默认是空,这个情况下可以向任意绝对路径写文件
在 MySQL 5.5 之后 secure_file_priv 默认是 NULL,这个情况下不可以写文件
日志写shell
可以下面命令查看日志位置
SHOW VARIABLES LIKE 'general%';+--------------- ...