目录
1.背景
2.环境准备
3. 打开本地的phpstudy下的mysql数据库的目录
4.修改配置文件my.ini文件,将utf8改为gbk
5.打开phpstudy自带的phpMyAdmin数据库,不过该数据库也是mysql类型的。
6.创建数据库为man和两个表news,admin
7.编写代码china.php,保存的时候用记事本asii保存,不要用utf8否则会乱码!!!
8.在命令行中打开数据库,查看是否是GBK编码
10.进行检测一下是否可以注入,看到此页面说明成功了!
11.之后进行正常的SQL注入,使用SQL注入的语句。
现在大多数网站使用unicode国际编码和utf-8编码,不过国内现在有的数据库使用了GBK编码,以及一些错误的配置导致出现了宽字节注入,也是SQL注入的一种方法。宽字节注入的出现是因为,程序员在编写过程中连接mysql数据库时错误的设置:
set character_set_client=gbk,其中php代码:mysql_query("SET NAMES 'GBK'");
指定三个字符集(客户端,连接层,结果集)
使用addslashes函数过滤提交的参数时,测试的注入点使用的单引号’ 就会被转义为:\' 这个作用就是对敏感函数的转义,让我们无法注入。
如果存在宽字节注入的话,一般情况下,我们会输入%df%27时首先经过上面的转义就会变成%df%5c%27(其中%5c就是反斜杠)
%df 不是固定的,自己可以组合,只要是汉字就可以的。例如:%89 %83 ....
之后,在数据库里查询,由于使用了GBK编码,它占两个字符,所以%df%5c转成汉字
windows 10 攻击机
windows 7 虚拟机——靶机
【搭建宽字节注入点的靶机 ,下载一个phpstudy2016】
表的结构 `admin`
--
CREATE TABLE IF NOT EXISTS `admin` (
`uid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(32) NOT NULL,
`pass` char(32) NOT NULL,
PRIMARY KEY (`uid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=2 ;
表的结构 `news`
--
CREATE TABLE IF NOT EXISTS `news` (
`tid` int(10) unsigned NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`content` varchar(256) NOT NULL,
PRIMARY KEY (`tid`)
) ENGINE=MyISAM DEFAULT CHARSET=gbk AUTO_INCREMENT=3 ;
-- 转存表中的数据 `news`
--
INSERT INTO `news` (`tid`, `title`, `content`) VALUES
(1, 'Summer夏天', 'Walking on the road, the wind coming like a heat wave attacks.'),
(2, ' Peking Duck 北京烤鸭', 'Why do you go to Beijing for studying?');
-- 转存表中的数据 `admin`
--
INSERT INTO `admin` (`uid`, `name`, `pass`) VALUES
(1, 'admin', '21232f297a57a5a743894a0e4a801fc3');
{$row['content']}
\n";
9.访问一下所搭建好的靶机,http://localhost/2020/1/china.php?id=1
http://localhost/2020/1/china.php?id=1%83%27
具体可参考:
https://mp.csdn.net/console/editor/html/106992794
结束!!!