SQL注入(三)

2022-08-31 23:12:26 字數 1008 閱讀 5130

寬位元組注入

mysql_query("set names 'gbk'");//設定字符集編碼,對資料庫執行之後的結果進行某種編碼(gbk)然後傳遞給使用者,返回gdk編碼的結果

mysql_set_charset("gbk");//設定字符集編碼,規定當與資料庫伺服器進行資料傳送時要使用的預設字符集

mysql_real_escape_string()對引數進行過濾轉移,其類似功能的函式

gbk編碼,針對漢字的一種編碼方式,使用兩個位元組編碼乙個漢字

漏洞形成原理:對資料庫執行之後的結果進行gbk編碼+執行過濾函式對使用者提交的資料進行過濾=寬位元組

測試步驟:

step1:訪問站點../gbksql/01/?id=1'檢視返回結果:select* from news where tid='1\",執行結果不受影響

step2:../?id=1%df(為啥使用df?高位在81以後就能用,81~fe)1%df--->1%df-->

step3:測試sql注入的位置

pdo寬位元組注入:

pdo:連線資料庫-》設定模板

$id=addslashes($id);

$conn=new pdo("mysql:host=localhost;dbname=dvwa;chartset=utf-8;port=3306","root","root") or die("error");

$conn->exec("set names 'gbk'");

$result_sql=$conn->prepare("select * from users where user_id=?");

$conn->setattribute(pdo::attr_errmode, pdo::errmode_exception);

二次編碼注入:瀏覽器會對from提交的資料處理之後進行urldecode

1%25%27

進入後端php第一次解析為1%27

處理資料

之後因為程式編寫的問題又進行了urldecode

變成1'

SQL注入(三) sql注入 bugku

原理 mysql 在使用 gbk 編碼的時候,會認為兩個字元為乙個漢字,例如 aa 5c 就是乙個 漢字 前乙個 ascii碼大於 128 才能到漢字的範圍 我們在過濾 的時候,往往利用的思 路是將 轉換為 換的函式或者思路會在每一關遇到的時候介紹 因此我們在此想辦法將 前面新增的 除掉,一般有兩種...

Sql注入實驗 三

對於繞過後台登入的實驗,我們通過前面的注入已經拿到了md5 解密就可以去登入後台了,但是我們並不滿求這乙個方法,難道就不能直接登入?得到後台登入位址 後台看不出什麼通過分析 和嘗試輸入 登入 報錯 那麼報錯會證明什麼了 那麼登入語句一定是這樣的 select name.passwd from use...

自學sql注入(三)

這是筆者自行整理出來的有關sql注入的一些知識點,自己還有些迷迷糊糊,可能有些不對的地方。等學完之後,再來詳寫一系列的關於sql注入的文章 自學sql注入 一 自學sql注入 二 1 and select 1 from select count concat database floor rand ...