从代码层面理解java的00截断漏洞

我们一般研究00截断,基本都是使用php来写的漏洞demo。所以都知道php下的00截断是和move_upload_file()这个函数有关,和这个漏洞相关的CVE有两个(CVE-2006-7243和CVE-2015-2348 )。但搜索了网上的资料,发现对java的00截断的研究文章甚少。 完全搞不清在java中这个漏洞是和系统,中间件,jdk,还是代码有关?如果是代码问题,那是某个函数存在漏洞呢,还是代码逻辑问题?

阅读全文

GhostScript沙箱绕过命令执行漏洞复现

一、漏洞信息

阅读全文

XSS中的JS转义和HTML转义

今天在给客户做渗透测试时,遇到了一处XSS。虽然很简单,但有点小意思。引发了我对js转义和html转义在XSS中的思考,故做个小笔记记录一下。两个例子都会以仿写现实场景的代码的说明问题。

0x01 一点知识贮备

1.1 关于转义

&#**;格式的字符串是html的转义字符,\是JS的转义符,转义的目的就是告诉解析器该符号为字符,而不是代码,防止代码出现歧义。

阅读全文

Blind XXE经典payload引发的脑洞

payload1是xxe一个经典payload。一般用于无回显的blind xxe。但是问题来了,为何Payload作者将payload内容分两部分(比如像payload1这样),而不是将所有攻击实体放到一个payload中(比如像payload2这样)。注意:Blind XXE是没有回显的,为了测试方便,我将payload有回显的显示了。

阅读全文

10分钟总结所有类型SQL注入

最近在给公司内部培训sql注入。其实很头疼,毕竟sql注入谁都知道,没有什么好讲的。于是一直在思考,这方面我能给大家带来什么干货。毕竟我也不想所有人浪费2个小时听我讲这些已经知道的东西。后来想想也许对于大家来说都知道sql注入,也都了解其原理。但是大家也许并没有对所有的类型进行总结,更不可能从四个维度去梳理sql注入相关知识。于是就有了这篇分享。

阅读全文

复现JBossMQ JMS Invocation Layer漏洞(CVE-2017-7504)

0x01 漏洞信息

项目 描述

阅读全文

复现tomcat远程代码执行漏洞(CVE-2016-8735)

0x01 漏洞信息

项目

阅读全文

jsEncrypter的Node.js版server脚本

最近在公众号发现有小伙伴在使用nodejs调用加密脚本对密码进行加密暴力破解。于是打算给Burp插件jsEncrypter添加nodejs版本的server脚本。目前已经更新该脚本到项目中,感兴趣的小伙伴可以去试试效果。

Node.js版server脚本代码

项目
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* author: c0ny1
* date: 2018-4-14
* file: nodejs_server.js
*/
var http = require('http');
var querystring = require('querystring');
var host = '127.0.0.1'; //地址
var port = '1664'; //端口
//require('your_encrypte_script.js'); /*引入实现加密的js文件*/
require('./sha384.js');
// 处理函数
function js_encrypt(payload){
var newpayload;
/**********在这里编写调用加密函数进行加密的代码************/
var pwdhash=CryptoJS.SHA384(payload);
newpayload = pwdhash.toString();
/**********************************************************/
return newpayload;
}
var server = http.createServer(function(request,response){
if(request.method === 'POST'){
var postData = '';
request.on('data',function(params){
postData += params;
});
request.on('end',function(){
var dataString = postData.toString();
var dataObj = querystring.parse(dataString);
var payload = dataObj.payload;
var encrypt_payload = js_encrypt(payload);
console.log('[+] ' + payload + ':' + encrypt_payload);
response.statusCode = 200;
response.write(encrypt_payload);
response.end();
});
}else{
response.statusCode = 200;
response.write("^_^\n\rhello jsEncrypter!");
response.end();
}
});
server.listen(port, host, function () {
console.log("[!] ^_^");
console.log("[*] nodejs server start!");
console.log("[+] address: http://"+host+":"+port);
});

阅读全文

快速定位前端加密方法

相信用过我jsEncrypter这个插件的朋友,都会碰到一个问题。 那就是一些大型网站前端太复杂,以至于无法定位到前端数据加密函数所在的位置。无法定位到加密方法所在,自然就无法编写jsEncrypter的phantomJS脚本了。k哥在今晚给了我很多灵感,让我对这个问题有一个完美的解决方案。以至于现在已是12号的凌晨3点,我仍不舍得搁浅内心零散的想法。窗外稍许的车辆略过的轰鸣,在夜深人静时显得格外刺耳。不过还好,没破坏我静静码字感觉。下面让我慢慢将这简单弱智有点零散,但细细思考,却有点意思的想法,串成一个流程。

阅读全文

混淆Burp插件代码

说要混淆Burp插件,可能有些小伙伴会说:

A:混淆干嘛,大家都这么忙,谁有时间看你的烂代码!

B:现在都鼓励开源,你这么做有悖于开源精神。

……

me:这和开源精神没有冲突,我的理解里,真正的开源精神应该是从内心出发的,而不是受“开源人士”的舆论压力,这是道德绑架。更不能因为大家开源,所以我也开源,为了开源而开源没有意义。况且本文仅仅研究混淆这门技术的原理和魅力!

阅读全文