一、寬字節(jié)概率
1、單字節(jié)字符集:所有的字符都使用一個字節(jié)來表示,比如 ASCII編碼(0-127)
2、多字節(jié)字符集:在多字節(jié)字符集中,一部分字符用多個字節(jié)來表示,另一部分字符(可能沒有)用
單個字節(jié)來表示。
3、寬字節(jié)注入是利用mysql的一個特性,使用GBK編碼的時候,會認為兩個字符是一個漢字
4、PHP中編碼為GBK,函數(shù)執(zhí)行添加的是ASCI編碼,MYSOL默認字符集是GBK等
二、php中的寬字節(jié)
addslashes()函數(shù)
1、addslashes()函數(shù)返回在預定義字符之前添加反斜杠的字符串。
2、預定義字符:單引號(),雙引號("),反斜杠(\),NULL
3、實例
<?php
$ss=addslashes('aiyou"bu"cuoo”)
echo($ss);
?>
運行結果:aiyou\"bu\"cuoo
三、寬字節(jié)注入原理
1、%DF':會被PHP當中的addslashes函數(shù)轉義為“%DF\’",\在URL里是“%5C”,那么也就是說,“%DF'"會被轉成“%DF%5C%27,倘若網站的字符集是GBK,MYSOL使用的編碼也是GBK的話,就會認為“%DF%5C%27"是一個寬字符
2、數(shù)據(jù)庫使用的是GBK編碼,PHP編碼為UTF8就可能出現(xiàn)寬字節(jié)注入,原因是為了防止發(fā)生SQL注入,會調用上面所介紹的幾種函數(shù),將單引號或雙引號轉義操作,在單或雙引號前加斜杠(\)。當數(shù)據(jù)庫使用的寬字節(jié)編碼會將兩個連在一起的字符被當做是一個漢字,而在PHP使用的UF8編碼則認為是兩個獨立的字符
四、演示操作(sqlilabs less-33)
sqlilabs.com/Less-33/?id=-1%df' union select 1,2,3 --+
文章來源:http://www.zghlxwxcb.cn/news/detail-815205.html
?出現(xiàn)%df' 像這種http請求的話一定是注入攻擊請求,而且是寬字節(jié)注入文章來源地址http://www.zghlxwxcb.cn/news/detail-815205.html
到了這里,關于SQL注入實戰(zhàn):寬字節(jié)注入的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!