sql注入之寬位元組注入
Bugku上看到一道這方面的題,從網上看了不少資料,談一談自己的認識。
當我們在位址列輸入單引號時頁面並沒有報錯,
說明單引號應該被過濾了,轉義為 \' 防止注入
檢視原始碼
字元編碼為gb2312
注意: html中的編碼並不影響測試,本題應該是作為提示。 html編碼改成utf-8依然會實現注入
字元編碼為gb2312 該編碼存在注入漏洞 可以繞過 \' 過濾
儘管現在呼籲所有的程式都使用unicode編碼,所有的網站都使用utf-8編碼,來一個統一的國際規範。但仍然有很多,包括國內及國外(特別是非英語國家)的一些cms,仍然使用著自己國家的一套編碼,比如gbk,作為自己預設的編碼型別。
通常來說,一個gbk編碼漢字,佔用2個位元組。一個utf-8編碼的漢字,佔用3個位元組。
GBK 向下與 GB 2312 相容 ,可以理解為gbk是gb2312的擴充套件版本 。編碼漢字時16進位制範圍可能不同。
gbk 首位元組對應0×81-0xFE,尾位元組對應0×40-0xFE(除0×7F),剛好涵蓋了轉義符號\對應的編碼0×5C。
0xD50x5C 對應了漢字“誠”,URL編碼用百分號加字元的16進位制編碼表示字元,於是 %d5%5c 經URL解碼後為“誠”。
例如: 構造攻擊
url提交為:www.baidu.com/test.php?username=aaa&passwrod=bbb %d5屬於首位元組大於128 可以構造範圍內的任意ascii碼
www.baidu.com/test.php?username=aaa%d5' %20or%201=1%23&password=bbb %20為空格 %23為註釋符號#號
url解碼後 username=aaa 0xd5 0×27 0×20 or 0×20 1=1 0×23
資料庫呼叫過濾函式轉義字元單引號0x27 變成0x5c0x27 0x5c為 / 字元
gbk編碼 0x5c0x27被認為是一個漢字 誠
強調一下 只要是前一個字元為大於(ascii碼)128即可 0x5c被通用 可以構造不同的16進位制
此時 查詢語句就為 select * from user where username=aaa誠' or 1=1 #&password=bbb
即 select * from user where username=aaa誠' or 1=1 永真 成功注入
當然 utf-8編碼不會出現這種情況 字元範圍和位元組數不同
我們再看sql注入這道題
當我們在url輸入 %df' 時頁面報錯
繁體字被寫入語句 所以開始構造,我們首先order by
頁面正常
繼續
開始聯合查詢
庫名為sql5 繼續聯合查詢
得到flag !
相關推薦
sql注入之寬位元組注入
Bugku上看到一道這方面的題,從網上看了不少資料,談一談自己的認識。 當我們在位址列輸入單引號時頁面並沒有報錯, 說明單引號應該被過濾了,轉義為 \' 防止注入
有趣的注入(寬位元組注入)
ctf:有趣的注入 (一)手注: url:http://ctf.cdusec.org:8086/sqli.php?id=1 實驗工具:火狐hackbar x001: 輸入:” ‘ “單引號無反應,再輸入" %df’ "(寬位元組注入,顯示報錯。) 截圖: x002判斷列數:判斷出
(學習)SQL注入--寬位元組注入
SQL注入–寬位元組注入 實踐: http://chinalover.sinaapp.com/SQL-GBK/index.php?id=-1 頁面顯示: 顯然執行的查詢語句是: select id,title from news where id = '1' 其
Sql 注入詳解:寬位元組注入+二次注入
sql注入漏洞 原理:由於開發者在編寫操作資料庫程式碼時,直接將外部可控引數拼接到sql 語句中,沒有經過任何過濾就直接放入到資料庫引擎中執行了。 攻擊方式: (1) 許可權較大時,直接寫入webshell 或者直接執行系統命令 (2) 許可權較小時,通過注入獲得管理
SQL注入教程——(四)寬位元組注入
前言 在mysql中,用於轉義(即在字串中的符號前加上”\”)的函式有addslashes,mysql_real_escape_string,mysql_escape_string等,還有一種情況是magic_quote_gpc,不過高版本的PHP將去除這個特
[轉載]sql寬位元組注入詳解
儘管現在呼籲所有的程式都使用unicode編碼,所有的網站都使用utf-8編碼,來一個統一的國際規範。但仍然有很多,包括國內及國外(特別是非英語國家)的一些cms,仍然使用著自己國家的一套編碼,比如gbk,作為自己預設的編碼型別。也有一些cms為了考慮老使用者,所以出了gbk
寬位元組注入例項
我們看一下html原始碼 看到編碼變化了 所以是寬位元組注入 所以我們要用%df來代替一個位元組 頁面正確 加個單引號頁面報錯 頁面報錯 存在注入 http://103.238.227.13:10083/?id=1%df' orde
深入探究寬位元組注入漏洞與修補原理
0、前言 最近要為了自動化審計蒐集所有PHP漏洞,在整理注入的時候,發現寬位元組注入中使用iconv造成的漏洞原理沒有真正搞懂,網上的文章也說得不是很清楚,於是看了榮哥(lxsec)以前發的一篇
對於寬位元組注入字元的一些問題以及理解
首先%df是url編碼形成的,查詢資料url編碼其實是ascii編碼的16進製表示,在前面加了一個%號,而對照ascii碼錶發現127號是%7F,中文的ascii碼是大於128,所以只要輸入的編碼ascii大小是大於128的,是可以測試成功的,比如說用%8F 這裡
sqli-labs————寬位元組注入(可以用於繞過濾了單引號或者\的WAF)
寬位元組注入的原理:原理:mysql在使用GBK編碼的時候,會認為兩個字元為一個漢字,例如%aa%5c就是一個漢字(前一個ascii碼大於128才能到漢字的範圍)。我們在過濾 ' 的時候,往往利用的思路
Spring高階注入之Field值注入
filed數值(也就是靜態常量)注入是通過fieldRetrievingFactoryBean完成的,這個類用來獲取目標bean的filed數值 packageBean.superIOCfield;publicclassField...{publicstaticfina
Web漏洞處理--http host頭攻擊漏洞處理方案/檢測到目標URL存在寬位元組跨站漏洞/ 檢測到目標URL存在SQL注入漏洞
1.配置web 攔截器 <filter> <filter-name>XssSqlFilter</filter-name> <filter-class>com.enation.eop.Se
寬位元組SQL注入原理
0x01: 經典的SQL注入利用的是沒有任何防範措施的PHP使用SQL查詢語句時可以通過URL輸入造成該語句恆成立,從而可以獲得資料庫中的其他資訊。 舉個例子: <?php $name=$_GET['name'];
CFT每日一題之簡單的SQL注入之二
首先,輸入1 嘗試一下 然後爆出ID 加 個 單引號 嘗試 ,出現報錯介面 然後 大概猜測程式碼是 select xx from XX where id='' 用and測試 發現了有過濾,經過多測實驗後,發現去掉空格就可以 然後開始構造,我們可以使用/**/
sql注入與防止SQL注入之引數化處理
sql注入的兩種情況: 操作程式碼: import pymysql user = input('使用者名稱: ').strip() pwd = input('密碼: ').strip() # 連結 conn = pymysql.connect(host='localhost', user='ro
SQL注入之騷姿勢小記 & 替換 繞過
https://mp.weixin.qq.com/s/ORsciwsBGQJhFdKqceprSw 1、IN之騷 這個我也偶然發現的,也不知前輩們有沒有早已總結好的套路了。w3school上對in操作符的介紹: http://www.w3school.com.cn/sql/sql_in.
SQL注入之——sqli-labs-master 下載與安裝
轉載請註明出處:https://blog.csdn.net/l1028386804/article/details/84262285 注意事項,寫在前面。 php版本一定要設定成 7 以下,7之後的mysql_都改成了mysqli_**了,用7以上版本的話會報錯 **********
實驗吧Web-中-簡單的sql注入之2
輸入union select、order by這些關鍵字會提示SQLi detected! 說明對於關鍵字有防護 輸入1 union也會提示SQLi detected! 但是如果去掉空格:1union,則會返回正常,1'and'1'='1(無空格)也返回正常 所以可能是過濾了空格。
實驗吧 | 簡單的sql注入之3
模糊測試結果: 1)查詢成功返回 Hello ,查詢失敗無回顯。 2)查詢id = 1 ,2 ,3均有回顯。 2)再看一下現在在哪個庫裡面吧! payload3 = http://ctf5.shiyanbar.com/web/index_3.php?id=0
簡單的sql注入之2WP
這裡我們會用到tamper,是python寫的,sqlmap一般自帶,主要的作用是繞過WAF 空格被過濾可以使用space2comment.py,過濾系統對大小寫敏感可以使用randomcase.py等等流程和簡單的sql注入之3是一樣的,不過加了–tamper而已