0%

AFL

1
2
make
make install

程序插桩&编译

有问题程序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
#include <string.h>

int main(void)
{
char login[32];
char passwd[32];

printf("Login: \n");
gets(login);
printf("Password: \n");
gets(passwd);

if (strcmp(login, "root") == 0) {
if (strcmp(passwd, "1qazxsw2") == 0) {
printf("Access Granted.\n");
return 0;
}
}

printf("Access Denied.\n");
return 1;
}
阅读全文 »

CBC加密原理

先预习下CBC的加解密原理吧。

加密

如下图所示,CBC的加密步骤如下:

  1. 对明文分组,每组长度通常为8或16字节,末尾分组需要填充,通常填充采用PKCS#5标准;
  2. 生成初始化向量IV,长度为分组长度;
  3. 对于第一个明文分组,先由IV异或明文分组1得到中间值,再通过对称加密(DES/AEC/etc)得到密文分组1;
  4. 对于接下来的分组,由上一个密文分组替代IV算得中间值,再通过对称加密(DES/AEC/etc)得到密文分组2,3,4……
阅读全文 »

prototype__proto__

prototype

Javascript的类是通过构造函数创建的,而给类增加方法则需要使用prototype,类似于设计模式中的原型模式:

1
2
3
4
5
6
7
8
9
10
function Foo() {
this.bar = 1
}

Foo.prototype.show = function show() {
console.log(this.bar)
}

let foo = new Foo()
foo.show()
阅读全文 »

因为帮我内推阿里的师傅告诉我以后可能要做源码审计的工作,先学习一下spotbugs和find-sec-bugs的扫描规则实现,并且尝试添加一个规则。

添加扫描规则——添加一个Detector

添加扫描规则主要是继承Detector,本文介绍以下几种主要的Detector:

阅读全文 »

获取类对象

动态加载一个类

1
2
3
URL[] urls = new URL[] {new URL("file:.\\out\\production\\java_reflect")};
URLClassLoader classLoader = new URLClassLoader(urls);
Class clazz = classLoader.loadClass("test.reflect.User");
阅读全文 »

用法

java动态代理机制可以实现使用一个抽象的中介类对任意类的任意方法进行进行代理,大致原理是运行时生成一个代理类,代理类再调用委托对象。

创建委托对象的接口

1
2
3
4
public interface Sell {
void sell();
void add();
}
阅读全文 »

About

本文列出四大安全会议(USENIX、CCS、NDSS和S&P)近5年来与Web安全有关的研究,已发现web方向的研究点。

XSS

研究热点聚焦在DOM-XSS上:

Don’t Trust The Locals: Investigating the Prevalence of Persistent Client-Side Cross-Site Scripting in the Wild, ndss19*

阅读全文 »

搭建漏洞服务

还是先搭一个漏洞的服务吧:新建一个~/Desktop/php/upload文件夹,文件夹下存在如下结构的文件和文件夹:

1
2
3
4
5
6
$ tree
.
├── files
└── upload.php

1 directory, 1 file

upload.php:

阅读全文 »