0%

题目修复部分

题目的点很容易看出,数组越界,不过如何利用这个比较难,我经过一段时间测试,发觉scanf的特性,输入-可以绕过,所以可以泄露cannary,泄露cannary过后可以任意写,然后精确覆盖到cannary过后进行ROP就行了,还有一个点就是输入长度为27的时候,他不会进行排序,这样才能ROP,不过最终我没利用成功,还有一个栈的偏移点我还没搞懂,所以最终也没打出来

Read more »

64位格式化字符串之自动化脚本编写

前言:pwntools的工具只支持32位格式化字符串,我每次做64位格式化字符串的题目都是手动调试了很久,做一道题调试得花个大半部分时间,然后再编写exp,所以我近几天在研究如何自动化的生成payload,让我能够轻松不调试一波梭,在了解原理过后,我便开始了我的编写之路。

Read more »

pwn_细节

partial write

保护全开情况下考虑部分覆盖,不要全部覆盖,开了pie后三位是固定的

巧妙利用unsortbin可以在malloc_hook或者free_hook前伪造一个地址,造成错位攻击

aslr跟pie区别

aslr是系统级别的,如果系统级别没有aslr,pie保护也没什么用
pie只是使得编译后的程序支持aslr,不支持的话就不会随机

Read more »

parot linux系统问题总结

换源

1
deb https://mirrors.sjtug.sjtu.edu.cn/parrot/ parrot main contrib non-free

出现命令行无法启动torbrowser-launcher

这个问题我谷歌了很久,也没有得到有效的答案,所以只能自己动手测试,这是一个程序员基本功,我重新安装了好几次torbrowser-launcher,也没有得到解决,所以不是安装的问题,是机器环境的问题。

Read more »

论如何在linux上安装ida7.2以及安装插件

序言:原来用ida pro7.0用了好久,听说ida新出了挺多新功能,又折腾了一天?太菜了,我只是想试试新功能而已,ida pro 7.2已经有插件可以同步反汇编程序和反编译程序视图,还有折腾了以前没折腾成的插件。其实最想的还是ida pro7.3,听说可以撤销。
我没找到ida pro7.2 linux版本,所以便用win下的替代了。linux下跑windows的软件,在我看来,首选就是wine了

Read more »

hadoop1

建议执行前先打快照,我原来就是不知道怎么折腾把环境搞崩了,然后又折腾花了好久

java代码

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
59
60
61
62
63
64
import java.io.IOException;
import java.util.Iterator;
import java.util.StringTokenizer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.mapreduce.Job;
import org.apache.hadoop.mapreduce.Mapper;
import org.apache.hadoop.mapreduce.Reducer;
import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;
import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;
import org.apache.hadoop.util.GenericOptionsParser;
public class WordCount {
public WordCount() {
}
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
String[] otherArgs = (new GenericOptionsParser(conf, args)).getRemainingArgs();
if(otherArgs.length < 2) {
System.err.println("Usage: wordcount <in> [<in>...] <out>");
System.exit(2);
}
Job job = Job.getInstance(conf, "word count");
job.setJarByClass(WordCount.class);
job.setMapperClass(WordCount.TokenizerMapper.class);
job.setCombinerClass(WordCount.IntSumReducer.class);
job.setReducerClass(WordCount.IntSumReducer.class);
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(IntWritable.class);
for(int i = 0; i < otherArgs.length - 1; ++i) {
FileInputFormat.addInputPath(job, new Path(otherArgs[i]));
}
FileOutputFormat.setOutputPath(job, new Path(otherArgs[otherArgs.length - 1]));
System.exit(job.waitForCompletion(true)?0:1);
}
public static class TokenizerMapper extends Mapper<Object, Text, Text, IntWritable> {
private static final IntWritable one = new IntWritable(1);
private Text word = new Text();
public TokenizerMapper() {
}
public void map(Object key, Text value, Mapper<Object, Text, Text, IntWritable>.Context context) throws IOException, InterruptedException {
StringTokenizer itr = new StringTokenizer(value.toString());
while(itr.hasMoreTokens()) {
this.word.set(itr.nextToken());
context.write(this.word, one);
}
}
}
public static class IntSumReducer extends Reducer<Text, IntWritable, Text, IntWritable> {
private IntWritable result = new IntWritable();
public IntSumReducer() {
}
public void reduce(Text key, Iterable<IntWritable> values, Reducer<Text, IntWritable, Text, IntWritable>.Context context) throws IOException, InterruptedException {
int sum = 0;
IntWritable val;
for(Iterator i$ = values.iterator(); i$.hasNext(); sum += val.get()) {
val = (IntWritable)i$.next();
}
this.result.set(sum);
context.write(key, this.result);
}
}
}
Read more »

xxe

学点关于xxe的知识,具体从红日安全这篇文章来学

xxe目前我觉得就是通过外部xml的声明,在使用的时候注入内容,达到目的

具体payload先保存一份

1.1 读取任意文件

PHP中可以通过FILE协议、HTTP协议和FTP协议读取文件,还可利用PHP伪协议。

1
2
3
4
5
6
<?xml version="1.0"?>
<!DOCTYPE Quan[
<!ENTITY f SYSTEM "file:///etc/passwd">
]>

<hhh>&f;<hhh>
Read more »

xss练习

xss-challenge

stage1

观察标签,直接

1
<script>alert(1)</script>

stage2

输入1

1
<input type="text" name="p1" size="50" value="1">

value=1,这里考虑闭合引号加> 然后再script

Read more »

upload-lab

序言: 最新需要补充点web安全的知识,找了些靶场来练手,先部署环境

下载

搭建

1
2
docker pull c0ny1/upload-labs
docker run -d -p 80:80 upload-labs:latest

注意需要进docker里创建upload文件夹以及,设置权限为777

Read more »

第一节:二进制安全概述
第二节:基础知识
2.1 什么是软件
2.2 什么是恶意软件
2.2.1 潜藏广告
2.2.2 木马
2.2.3 病毒
2.2.4 后门软件
2.3 什么是漏洞
2.3.1 poc是什么
2.3.2 exp是什么
2.4 虚拟环境
2.4.1 沙盒
2.4.2 虚拟机
2.5 分析手法
2.5.1 静态分析
2.5.2 动态分析
第三节:二进制安全应用
3.1 二进制层面的攻击
3.1.1 软件的破解
3.1.2 制作二进制层面的恶意软件
3.1.3 利用软件漏洞攻击
3.2 二进制层面的防御
3.2.1 软件的安全防护
3.2.1 恶意软件的防护
3.2.1 软件漏洞的预防
第四节: 常见安全场景
4.1 windows安全
4.2 移动安全
4.2.1 安卓安全
4.2.2 ios安全
第五节: 二进制层面的安全防护
5.1 基础级别防护
5.1.1 安装杀毒软件
5.1.2 下载方式的选择
5.1.3 未知软件的处理
5.2 进阶防护
5.2.1 利用工具分析未知软件
5.2.2 根据行为判别软件类别
5.2.3 虚拟环境洞察软件行为
5.2.4 应对处理措施

Read more »