Mengencode sebuah parameter dan variable pada PHP script

 

-

Hai sobat.

Saya ikal,

Disini saya akan share sebuah trik nih

-


Sesuai judul kali ini kita akan membahas sebuah trik untuk sedikit memperketat sebuah keamanan website berbasis PHP dan MySQL. 


Trik ini hanya perlu mengencode bagian parameter atau bahkan variable yang sering digunakan para Injector untuk melakukan exploitasi, dan mungkin kalian butuh trik yang saya buat ini :D. Langsung saja.


1. Akses lebih

yang pertama kalian harus mempunyai akses lebih kedalam website, agar kalian bisa melakukan edit,rename,delete  dan lainnya kepada sebuah file yang ada, mungkin melalui cpanel,or backdoor kalian bisa melakukan trik ini.


2. Mengedit script

nah jika kalian sudah mendapatkan akses lebih kedalam server, kalian hanya perlu mengedit isi file yang merupakan yang terdapar parameter dan variable yang ada.

Default : 


<?php

          $id = $_GET['id'];

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>


Script tersebut masih normal dan belum diubah atau masih default.

Sekarang mari kita coba edit agar nilai yang dihasilkan berupa encoding.


Edit seperti ini : 


<?php

          $id = base64_decode($_GET['id']);

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>


Maka inputan yang keluar adalah seperti ini : 

$id = base64 -> nilai dari $id


Bagaimana kalau kita tambah menjadi dua atau tiga kali :D.


<?php

          $id = base64_decode(base64_decode(base64_decode($_GET['id'])));

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>

 

Maka hasil inputan seperti ini : 

$id = base64 -> base64 -> base64 -> nilai dari $id


Xixixi Injector akan merasa malas menginject websitemu, bila encodean sampai dua kali atau lebih :D.


Belum puas melihat injector tersiksa? Coba cara ini. Script diatas hanya mengencode nilai yang ada dari $id bagaimana kalau $id kita lakukan encode juga :D. Let's try.


 <?php

          $key = sha1('id');

          $id = $_GET[$key];

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>

Atau 

 <?php

          $key = base64_encode('id');

          $id = $_GET[$key];

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>


Maka hasil yang masuk seperti ini

sha1 -> $id = nilai dari $id  

atau 

base64 -> $id = nilai dari $id


bagaimana jika kita persulit lagi :D.


<?php

          $key = sha1('id');

          $id = base64_decode(base64_decode($_GET[$key]));

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>

Atau 

 <?php

          $key = base64_encode('id');

          $id = base64_decode(base64_decode($_GET[$key]));

  $sql = "SELECT * FROM enuo_content WHERE id='$id'";

  $res = $db->query($sql);

  $row = $db->getarray($res);

   ?>

 

Maka hasilnya seperti ini

sha1 -> $id = base64 -> base64 -> nilai dari $id

Atau 

base64 -> $id = base64 -> base64 -> nilai dari $id


"bang kok sha1 ama base64 doang?" bisa kok yang lainnya, tinggal ganti-ganti aja.


Nah segini aja artikel kali ini

Thanks

See u