FINSENTY54

几处早莺争暖树,谁家新燕啄春泥。

0%

ELF x86 - Stack buffer overflow basic 5

源码

1
2
3
4
5
6
7
8
9
10
while(fgets(buff, BUFFER, file) != NULL)
{
chomp(buff);
if(strncmp(buff, "USERNAME=", 9) == 0)
{
cpstr(init.username, buff+9);
}
}
fclose(file);
return init;
阅读全文 »

ELF x86 - Stack buffer and integer overflow

永远的神::https://github.com/s1syphu5/RootMe-Challenges/tree/master/System/ELF%20x86%20-%20Stack%20buffer%20and%20integer%20overflow

ret2reg

为了让shell更实用
覆盖EIP, 使用现有的命令的地址,例如jmp esp , 跳转buffer , 后面是shellcode

查找jmp/call esp地址

  1. 可以在共享库中找
  2. 也可以在自身程序找命令
    阅读全文 »

ELF x86 - Stack buffer overflow basic 6

return to libc

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
#include <string.h>
#include <sys/types.h>
#include <unistd.h>

int main (int argc, char ** argv){
char message[20];

if (argc != 2){
printf ("Usage: %s <message>\n", argv[0]);
return -1;
}

setreuid(geteuid(), geteuid());
strcpy (message, argv[1]);
printf ("Your message: %s\n", message);
return 0;
}
阅读全文 »

ELF x86 - stack buffer overflow basic 4

参考:

  1. https://github.com/s1syphu5/RootMe-Challenges/tree/master/System/ELF%20x86%20-%20Stack%20buffer%20overflow%20basic%204
  2. https://gitlab.com/rsheasby/root-me-app-system/-/blob/master/09.%20ELF%20x86%20-%20Stack%20buffer%20overflow%20basic%204/instructions.md
  3. http://showlinkroom.me/2017/12/04/Root-me-App-System02/
  4. https://www.root-me.org/en/Challenges/App-System/ELF-x86-Stack-buffer-overflow-basic-4?action_solution=voir#ancre_solution

逆向

struct EnvInfo GetEnv(void){} 中有strcpy()函数,存在溢出点。

            +----------------------------+
            |      HOME env variable     |     %ebp - 540
            +----------------------------+
            |    USERNAME env variable   |     %ebp - 412
            +----------------------------+
            |      SHELL env variable    |     %ebp - 284
            +----------------------------+
            |      PATH env variable     |     %ebp - 156
            +----------------------------+
            |           saved ebp        |
            +----------------------------+
            |        return address      |     %ebp + 4
            +----------------------------+
            |   rep movsl dest. address  |     %ebp + 8
            +----------------------------+  
阅读全文 »

ELF x86 - BSS buffer overflow & 构造shellcode

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

char username[512] = {1};
void (*_atexit)(int) = exit;

void cp_username(char *name, const char *arg)
{
while((*(name++) = *(arg++)));
*name = 0;
}

int main(int argc, char **argv)
{
if(argc != 2)
{
printf("[-] Usage : %s <username>\n", argv[0]);
exit(0);
}

cp_username(username, argv[1]);
printf("[+] Running program with username : %s\n", username);

_atexit(0);
return 0;
}
阅读全文 »

Weak password

tNikto

Nikto是一款开源的(GPL)网页服务器扫描器,它可以对网页服务器进行全面的多种扫描,包含超过3300种有潜在危险的文件/CGIs;超过625种服务器版本;超过230种特定服务器问题。

nikto -host http://challenge01.root-me.org/web-serveur/ch3/

阅读全文 »

md5快速碰撞

https://github.com/Finsenty54/fast_collision

C++

头文件

https://www.runoob.com/w3cnote/cpp-header.html
C++ 语言支持”分别编译”(separatecompilation)。也就是说,一个程序所有的内容,可以分成不同的部分分别放在不同的 .cpp 文件里。.cpp 文件里的东西都是相对独立的,在编译(compile)时不需要与其他文件互通,只需要在编译成目标文件后再与其他的目标文件做一次链接(link)就行了。

阅读全文 »

longest_substring_without_repeating_characters

这题用到了哈希表 和 滑动窗口

滑动窗口:
就是有两个变量分别指示 窗口的 头和尾,就可以任意改变这两个变量

哈希表:
哈希表存着目前最长子组的值-地址对

阅读全文 »