方法一:Remote Linux debugger在IDA的/dbgsrv目录下有
将这两个文件移动到Linux环境下,然后赋予权限:
12chmod 777 linux_serverchmod 777 linux_server64
启动对应文件:
1./linux_server
此时Linux环境就准备好了,接下来配置IDA,选择Remote Linux debugger调试器,然后F9,此时会出现以下内容:
其中应用程序和输入文件均为调试文件在Linux下的路径(包括文件名),目录则为上面的路径去掉文件名后的路径。主机名称为Linux的IP,端口默认23946。
注意:调试的程序也需要赋予权限
1chmod 777 xxx
方法二:Remote GDB debuggerGDB需要使用gdbserver来进行远程协助,首先启动服务:
1gdbserver localhost:port progress_name
port:指定一个闲置端口
progress_name:这个随意取个名字即可
接下来在IDA中配置,IDA中按下F9:
应用程序和输入文件均为调试文 ...
环境配置JavaJava版本应在8u71之前,后续版本已经修复。java历史版本下载:https://www.oracle.com/java/technologies/javase/javase8-archive-downloads.html
commons-collections该依赖版本应在3.1-3.2.1之间
源码在java安装路径下解压src.zip,然后下载sun的源码到src文件夹,可以在以下网址寻找对应版本的sun包:https://hg.openjdk.org/
IDEA首先安装好maven,新版默认绑定,然后插件会自动安装。新建一个maven的项目环境,之后项目结构会如下图所示:
在pom.xml中的<project>标签下导入依赖:
1234567<dependencies> <dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</arti ...
HashMap的put查看HashMap这个类的 put()方法:
123public V put(K key, V value) { return putVal(hash(key), key, value, false, true);}
调用了 hash()方法,跟进 hash()方法:
1234static final int hash(Object key) { int h; return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);}
这里调用了传入参数的 hashCode()方法。而 URL类中就有一个这样的方法:
1234567public synchronized int hashCode() { if (hashCode != -1) return hashCode; hashCode = handler.hashCode(this); return hashCode;}
可 ...
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看一眼源码:
123456789101112131415161718192021222324252627$is_upload = f ...