R4bb1t的ctf博客


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

pwnablr.kr 之 asm

发表于 2022-02-14 | 分类于 ctf

用了沙箱,只开启了,open,read,write,exit,4个函数,并且在执行我们的shellcode前还清空了所有寄存器,但是这不影响,照常写shellcode。只是这flag的名字嘛,真长!

可以用pwntools,shellcraft模块

阅读全文 »

pwnhub[11月公开赛] pwn2

发表于 2022-02-14 | 分类于 ctf

先说漏洞

edit函数中存在下标溢出,刚好能覆盖到chunk[0]

1
2
3
4
5
6
7
8
9
10
11
12
int edit()
{
signed int idx; // [rsp+Ch] [rbp-4h]

puts("index:");
idx = read_int();
if ( idx < 0 || idx > 17 || !*qword_4050[idx].chunk ) //idx=17时,溢出
return puts("nonono");
puts("conttent:");
read(0, *qword_4050[idx].chunk, 0x300uLL);
return 0;
}
阅读全文 »

2021 pwnhub【迎中秋】公开赛

发表于 2022-02-14 | 分类于 ctf

moregirlfriend

分析

glibc 2.31版本,开启沙箱禁用了execve,saygoodbye功能是一个其中释放堆的操作,漏洞就在这个函数中

4

阅读全文 »

2021广东省强网杯

发表于 2022-02-14 | 分类于 ctf

girlfriend

程序中存在许多花指令,但是都是一样的类型

1

妨碍反编译,先去花

阅读全文 »

AFL源码分析计划1 -- afl-gcc.c

发表于 2022-02-14 | 分类于 fuzz

从main函数开始,可以看到主要就这三行

1
2
3
4
5
find_as(argv[0]);

edit_params(argc, argv);

execvp(cc_params[0], (char**)cc_params);
阅读全文 »

AFL源码分析计划2 -- afl-as.c

发表于 2022-02-14 | 分类于 fuzz

从main函数开始

1
u8* inst_ratio_str = getenv("AFL_INST_RATIO");

先是从环境变量中拿了AFL_INST_RATIO,这是插入指令的密度

阅读全文 »

DDCTF的两道简单逆向

发表于 2022-02-14 | 分类于 ctf

re1

32位PE文件,加了upx壳,先脱壳,随便一个工具就可以

脱完壳扔IDA,

逻辑其实很简单就是输入一串字符串,经过sub_401000这个函数处理之后,结果跟”DDCTF{reverseME}”进行比较

那么主要就是分析这个函数了,

阅读全文 »

AFL源码分析计划3 -- afl-as.h

发表于 2022-02-14 | 分类于 fuzz

这个头文件里面放着的是汇编器编译汇编到二进制时插入的汇编代码。

这里只分析64位的

trampoline_fmt_64

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
static const u8* trampoline_fmt_64 =

"\n"
"/* --- AFL TRAMPOLINE (64-BIT) --- */\n"
"\n"
".align 4\n"
"\n"
"leaq -(128+24)(%%rsp), %%rsp\n"
"movq %%rdx, 0(%%rsp)\n"
"movq %%rcx, 8(%%rsp)\n"
"movq %%rax, 16(%%rsp)\n"
"movq $0x%08x, %%rcx\n"
"call __afl_maybe_log\n"
"movq 16(%%rsp), %%rax\n"
"movq 8(%%rsp), %%rcx\n"
"movq 0(%%rsp), %%rdx\n"
"leaq (128+24)(%%rsp), %%rsp\n"
"\n"
"/* --- END --- */\n"
"\n";
阅读全文 »

DynELF实现无libc.so泄露函数地址

发表于 2022-02-14 | 分类于 ctf

DynELF简介

在做漏洞利用的时候,由于ASLR的影响,我们在获取某些函数地址的时候,需要一些特殊操作;一种方法是先泄露出libc.so中的某个函数,然后根据函数之间的偏移,计算我们需要的函数地址,但是这种方法局限于我们需要找到和目标服务器上一样的libc.so,而有些特殊情况下往往找不到对应的libc.so文件;另一种方法就是利用如pwntools的DynELF模块,对内存进行搜索,直到得到我们需要的函数。

阅读全文 »

Afl-Fuzz 初探

发表于 2022-02-14 | 分类于 fuzz

Afl-Fuzz

AFL(American fuzzy lop)号称是当前最高级的Fuzzing测试工具之一,由谷歌Michal Zalewski所开发。通过对源码编译时进行插桩(简称编译时插桩)的方式自动产生测试用例来探索二进制程序内部新的执行路径;与其它基于插桩技术的fuzz相比,afl-fuzz具有较低的性能消耗,有各种高效的fuzzing策略和tricks最小化技巧,不需要先进行复杂的配置。当然AFL也支持对没有源码的二进制程序进行学习方式,但是需要QEMU的支持。

阅读全文 »
1…4567
R4bb1t

R4bb1t

67 日志
10 分类
6 标签
RSS
友链
  • Xi4or0uji
  • V1ctor
  • 23r3f
  • zs0zrc
  • ditto
  • ch4r1l3
  • 知世
© 2022 R4bb1t
由 Hexo 强力驱动
|
主题 — NexT.Gemini v5.1.4
0%