Here's something encrypted, password is required to continue reading.
阅读全文 »

问题如下:

0

解决方法:

1

notepad C:\Windows\System32\drivers\etc\hosts

原因推测

clash系统代理时会更改本地hosts原因

随机数生成原理

rand()

C 库函数 int rand(void) 返回一个范围在 0 到 RAND_MAX 之间的伪随机数。

RAND_MAX 是一个常量,它的默认值在不同的实现中会有所不同,但是值至少是 32767。

srand()

C 库函数 void srand(unsigned int seed) 播种由函数 rand 使用的随机数发生器。

void srand(unsigned int seed)

参数seed是一个整形值,用于伪随机数生成算法播种。

伪随机数绕过方法

修改seed

有时随机数的种子seed会在栈上,可以通过栈溢出等方法对齐进行覆盖为已知值,再通过这个已知值获取对应的随机数序列

利用ctypes撞库

ctypes是Python内建的用于调用动态链接库函数的功能模块,通过调用该模块以及利用与题目相同的libc文件,来达到一个与题目中随机数生成方式相同的效果,实现撞库,这种方式下如果提前覆盖了指定种子,是更容易达成,如果直接设置时间种子撞库,可能存在时间对不上的情况,需要多测试几次。

使用方法:

1
2
3
4
5
from ctype import *
libc=cdll.LoadLibrary("libc.so.6")
a=[]
for i in range(50):
a.append(libc.rand())
1
2
3
#使用相同时间为种子
elf1=ctypes.CDLL("/lib/x86_64-linux-gnu/libc.so.6")
elf1.srand(elf1.time(0))

何为格式化字符串漏洞

1
2
3
4
5
6
7
#include<stdio.h>
int main(){
` char buf[16];
gets(buf,0x400);
printf(buf);
return 0;
}

形如上述代码的程序一般具有格式化字符串漏洞,试想如果往buf里输入%p等格式化字符串时会发生什么

那么细心的师傅们可能就会说了:你这后面也没跟第二个参数啊,这能运行吗?

答案是肯定的,并且打印出的地址就是栈上的地址,这就是格式化字符串最简单的用法:泄露栈地址

那么还有什么别的用途吗,且听我继续分析

阅读全文 »