程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> SQL注入奇招致勝 UNION查詢輕松免費看電影

SQL注入奇招致勝 UNION查詢輕松免費看電影

編輯:關於MYSQL數據庫

周末無聊,同學想讓我幫他下載一些電影看,我爽快的答應了。看了這麼多期X檔案,水平自然長進不少,也沒事玩玩"雞"。這次想免費下載些電影,沒問題(我知道N多電影程序有漏洞)。閒話少說,切入正題。

我打開Google,隨便搜索了一下電影網站,點開了一個。看了一下界面,知道和金梅電影系統關聯很大。金梅系統和"洞"網(7.0安全多啦,自己想的)差不多,也是有N多漏洞,比如注入啊,COOKIE欺騙什麼的。我就在X檔案03年11期看過一篇文章,寫的是用ASC和MID函數對系統管理員帳戶進行猜測。我也想用這種方法猜測,猜了半天都沒猜對,真煩人,同學還在那邊等我哪,這不是很丟人。我決定找個簡單的辦法,還是讀讀源碼吧!

下載了一個金梅三電影系統,看了一下,這麼多個文件,頭馬上大了。還是在自己電腦上運行一下吧。注冊了一個用戶,點了一下找回密碼,別人說這裡有漏洞。看了一下,象是有漏洞的界面,有三個參數,還直接把密碼顯示出來。好,看一下源碼。

39 <% if request("myuserid")="" then %>

...

58 <%else

set rs=server.createobject("adodb.recordset")

sql="select passWord from users where userid='"&request("myuserid")&"'and city='"&request("ask")&"'and adress='"&request("answer")&"'"

rs.open sql,conn,1,1

if rs.eof and rs.bof then%>

這裡果然沒過濾。好多人都想到了可以用上面的方法注入了。能不能有更簡單的方法呢?

我仔細考慮語句的形式如下:

select passWord from users where userid=‘‘ and city=‘‘ and adress='‘

如果用戶名,密碼提示問題(city),密碼提示答案(adress)和表users一行匹配,便打印這行的passWord,而且是明文的。我想的過程就不寫了,後來我想到了一種方法,就是利用union查詢。Access功能是很弱的,不能執行命令,不能導出文本,還不能注釋。有個子查詢可以利用之外,也就剩下這個 union了。


怎麼利用呢?先在本機做實驗。測試過程簡略,直接寫有所收獲的結果。


要是知道了一個該網站的一個用戶名(比如abc),可以這樣利用。

在"你注冊問題"處填: abc' or ‘1=1(如果用戶名是bcd,就變為bcd' or ‘1=1)

密碼提示問題處隨便填幾個字母或數字,最好別有符號,容易影響結果: 比如字母a

密碼提示答案處隨便填幾個字母或數字,填個a

回車後就看到該用戶的密碼了,簡單吧(如圖一)。

其實這樣一來,上面的語句就變為:

select passWord from users where userid=‘abc' or ‘1=1‘ and city=‘a‘ and adress='a‘

呵呵,程序無條件的執行了,因為被 or ‘1=1'跳過後面的驗證了。


可是網站用戶名也不是輕易得到的啊。別急,得到用戶名一樣簡單。如下:


在"你注冊問題"處隨便處填幾個字母或數字,最好別有符號,容易影響結果: 比如字母a

密碼提示問題處和上面一樣,隨便填:我也填個a

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved