本地搭建Visual Regexp
搭建原因大家应该都懂吧,一个是正则可视化实在是很香很必要,其次线下没网的话没有个离线工具就很容易gg,同类工具还有cyberchef等
在git clone
之后首先肯定是npm install
,出现vulnerabilities很正常,直接npm audit fix --force
,一次不行就两次
奇葩的是作者自己的visual-regex包一直是以快捷方式的形式被安装(后来发现是整个项目的package.json编写的问题)
解决方法:删除快捷方式,单独安装npm i visual-regex
,用everything查找到该包具体存在的位置,复制到node_modules目录下
之后到build目录下node .\build.js
报错hightlight.js并没有引入./lib/highlight,查看\highlight.js\package.json的exports部分,发现第90行的引用是".",将其改为"./lib/highlight"
再次build提示*‘NODE_ENV’ is not recognized as an internal or external command, operable program or batch file.*(此处截图走丢了),解决方法npm install -g win-node-env
之后node .\build.js
即可成功build,在devlist文件夹下的index.html即可正常使用相关功能
无法打开jar包应用
这个应该属于常见问题了,一般原因是java版本不对
很多人选择设置不同名字的环境变量,比如java8,java11,我的话是只有java11是环境变量,在有些jar需要java8的环境时直接用everything搜索java.exe,复制路径之后xxx\java.exe -jar xyz.jar
这样来运行
远程调试Node.js
场景:用vulhub或其它已经打包好的docker环境复现cve需要远程调试
首先修改对应的docker文件:package.json的"scripts"字段的"start"部分增加--inspect=0.0.0.0:port
,指名调试时的监听端口
docker-compose.yml中增加监听端口"8000:9229",之后正常docker-compose up -d
本地先下载好一样的文件,用vscode生成一个调试文档lauch.json
需要改的配置有address(远程ip),port(远程监听端口),localRoot(本地路径),remote(远程路径),之后即可打断点调试
出现unbound breakpoint正常,大概率是你的交互就没执行到打断点的地方,所以没什么反应
VirtualBox给虚拟机磁盘扩容
当初给kali只分配了16G(无奈啊,谁让我主机也就512,得省着用),导致今天pip一个包都失败
之后我直接用自带的主机介质管理器增加盘片的大小
当我把下面显示大小的条滑到24G的时候我觉得稳了,这还能不够用???于是自信开机
笑死,GParted没识别出来,df -h
也完全没变化,我就又多分配了4G,结果裂开,还是没识别
然后我发现问题在于快照的存储是单独有一个uuid的vdi的,而扩容时我选择在最上层的kali.vdi扩容,导致不会同步到下面的快照的存储信息
解决方法就是把前面所有的快照删除掉,之后再开机就可以识别了
由于未分配和/dev/sda1之间隔着扩展分区和swap,所以先删除这两个,扩容后再新建加回来
应用修改之后自信开机,发现怎么kali的龙半天都不蓝…… 一番排错,之后发现是因为swap分区的uuid发生改变导致swap没有正常挂载(swapon --show
回显为空)
输入blkid
复制/dev/sda5的uuid,将其复制粘贴到/etc/fstab的对应位置,就好啦
usage of api documented as @since xxx
idea->Project Structure->Project Settings->Language level
tomcat&部署war包
傻逼Java,总是一堆问题
首先是打war包,用Maven
将会导出war到target目录下,将它复制到tomcat/webapps目录下,启动,结果直接来了404
- org.apache.catalina.core.StandardContext.startInternal 一个或多个listeners启动失败,更多详细信息查看对应的容器日志文件
在tomcat下的logs目录查看localhost.year-month-day.log,发现详细报错为org.apache.catalina.core.StandardContext.listenerStart 配置应用程序监听器[org.apache.shiro.web.env.EnvironmentLoaderListener]错误
于是考虑是打包时没有带上依赖,查看war打包时的lib文件夹发现都不缺
再回看完整报错,在最后有Caused by: java.lang.ClassNotFoundException: javax.servlet.ServletContextListener,发现问题和我们打包无关 而是tomcat版本的问题
通过下载tomcat9版本来解决报错,此处是下载链接,直接解压
./bin/catalina.sh run
# 用这个命令为了让简短报错直接打印在console
idea远程调试java web项目(jar/tomcat)
- java -jar方式启动
以复现CVE-2020-13933为例,这里java项目直接-jar即可启动,无需依赖tomcat作web服务器
docker pull jackey0/cve-2020-11989
docker cp <container-id>:/springboot-shiro-0.0.1-SNAPSHOT.jar /home/name/t3mp/
# 8426对外web端口, 8001对外调试端口
docker run -p 8426:8080 -p 8001:1456 <image-id> /bin/sh -c 'java -jar -agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1456 /springboot-shiro-0.0.1-SNAPSHOT.jar'
此处添加参数与docker的相同
- tomcat加载war包方式
编辑tomcat目录下./bin/catalina.sh,搜索JPDA_ADDRESS
,修改
JPDA_ADDRESS="0.0.0.0:8000"
然后idea设置与上面相同,tomcat启动
./catalina.sh jpda run
idea的远程看着花哨,有一堆设置可以选,但是那个看起来方便的tomcat remote server调试实际远不如这样,垃圾
之后打断点调试即可,熟练掌握右键->add as a library的方式调试核心jar
idea打jar包(非maven)
maven的话相当简单,直接用右侧maven工具栏即可完成build
非maven下,以通达OA综合利用工具为例
注意到根目录下就有.idea文件夹,但是直接idea打开并build并不会得到编译好的jar,排错后发现manifest file指定的com.xxx主类有问题,是项目的module没有设置好
需要在这里设置Content Root,这样才可以在Artifacts处正确读取到Manifest File(不然是不正常的),并且module sdk也要设置好(不然为空)
之后勾选Include in project build,再build就正常了
idea打jar包(maven)
以冰蝎3.0.11为例,下载github上已经反编译好的源码(感谢带佬的反编译)
git clone https://github.com/MountCloud/BehinderClientSource.git
idea打开,首先把项目sdk之类的改成jdk8,然后就是排错之路:
- pom.xml的com.sun的systemPath改为绝对路径
默认是取用系统环境变量,我本机主要还是java11,而com.sun的那个包在java8下面,所以我改成了绝对路径
- idea虽然可以自动解决maven依赖缺失问题,但是可能会由于烂网导致某个依赖下载一半留下一堆sha1, part文件却没有主体jar,只需要把这个依赖的主文件夹删掉,再maven reload即可重新下载
其它问题就没有了,直接maven package即可得到目标jar
还有部分包的问题,可以省事都改成
<scope>provided</scope>
,有依赖会好些net.rebeyond.behinder.dao.ShellManager#ShellManager()的DB_PATH修改为
./data.db
,把资源文件中的data.db放入target下 和最后的jar包同目录即可
idea在build项目时报错 internal java compiler error
有以下几个需要排错的地方
- Project Structure
- Settings
- pom.xml
java rmi调试报错解决
亲测用-D
方式添加参数没用(可能是我本地环境太垃圾了 破win10)
System.setProperty("java.rmi.server.useCodebaseOnly","false");
System.setProperty("java.security.policy","E:\\client.policy");
System.setProperty("java.rmi.server.codebase","http://nxo90f9obuj1boi0bzbdanmca3gt4i.burpcollaborator.net/");
if(System.getSecurityManager() == null){
System.out.println("Setup SecurityManager...");
System.setSecurityManager(new SecurityManager());
}
grant {
permission java.security.AllPermission;
};
参考:https://coderanch.com/t/654168/java/java-security-AccessControlException-access-denied
windows+vscode使用gmp库(静态库)
# msys2.exe
pacman -Sy # 刷新软件包数据
pacman -S mingw-w64-x86_64-toolchain # 安装64位mingw
# mingw64.exe
pacman -Ss msys/gcc
pacman -Ss msys/make
cd D:/gmp # 以下步骤并不会特别耗时 半个小时内应该就可
./configure
make
make check
make install
生成的静态库文件在gmp内的.libs
目录下,使用时
#include <D:/gmp-6.2.1/gmp.h>
在vscode的tasks.json中添加这样的参数
"-I",
"D:\\gmp-6.2.1", // gmp.h所在文件夹
"-L",
"D:\\gmp-6.2.1\\.libs", // .libs文件夹路径 静态库所在处
"-l",
"gmp" // 表示libgmp.a库
继续f5即可(因为我是把f5当编译用的 runcode不行 f5行(((
————最后吐槽一下windows上编译c程序的繁琐问题(仅针对vscode 没用过vc)。最开始学c的时候顺着python用vscode的习惯就想着用vscode写c,然后根据教程配好了环境:下载MinGW、配置.vscode的调试信息、下载vscode的相关插件,终于写出了hello word,但是之后问题也没断过,比如大家都清楚的控制台gbk和utf-8,以及chcp 65001和chcp 936的永恒之争,最后我妥协的方式是把所有的c文件编码格式设为gbk,同时将调试参数改为-finput-charset=GBK -fexec-charset=GBK
;第二个问题就是MinGW64这个坑货了,当时安装时我完全没注意到还有很多选项,直接zip解压的
gcc version 8.1.0 (x86_64-posix-seh-rev0, Built by MinGW-W64 project)
后来做免杀发现寄了,这个seh
的版本不能编译32位的文件,即使加了-m32
也不行,草,妈的。我当时不想再破坏主机的环境,所以在虚拟机装了sjlj
版的,终于可以用-m32
了
再然后就是现在,为了用gmp库我还得借助msys,用它的make,那你MinGW的cmake是干什么吃的?????
而且,而且,mysys下通过pacman安装的MinGW64也无法正确编译32位程序
最后的解决方法是把sjlj版的直接覆盖掉我用不到的MinGW32文件夹里,然后实现了顺滑的-m32
总之。还是。非常无语。