https://www.leavesongs.com/PENETRATION/sql-injections-in-mysql-limit-clause.html
一般实际过程中使用 limit 时,大概有两种情况,一种使用 order by ,一种就是不使用 order by 关键字
执行语句
这种情况下的 limit 后面可以使用 union 进行联合查询注入
执行语句
执行语句
此时后面再次使用 union 将会报错
除了 union 就没有其他可以使用的了吗,非也
此方法适用于 5.0.0<MySQL <5.6.6 版本,在limit语句后面的注入
MySQL 5中的SELECT语法:
limit 关键字后面还可跟 PROCEDURE 和 INTO 两个关键字,但是 INTO 后面写入文件需要知道绝对路径以及写入shell的权限,因此利用比较难,因此这里以 PROCEDURE 为例进行注入
报错,尝试一下对其中一个参数进行注入,这里首先尝试报错注入
成功爆出 mysql 版本信息,证明如果存在报错回显的话,可以使用报错注入在 limit 后面进行注入
不存在回显怎么办,延迟注入呀
执行命令
如果 select version() 第一个为5,则多次执行sha(1)达到延迟效果
这里使用 sleep 进行尝试,但均未成功,所以需要使用BENCHMARK进行替代
“ERROR 1366 (HY000): Incorrect string value: '\xBE\xEA' for column 'name”,此问题的原因:配置文件错误。
解决的方法和 *** 作步骤如下:
1、首先,右键单击开始图标,然后在菜单上选择“运行”选项,如下图所示,然后进入下一步。
2、其次,完成上述步骤后,在输入框中输入“cmd”命令,然后单击“确定”按钮,如下图所示,然后进入下一步。
3、接着,完成上述步骤后,输入“mysql -uroot -p+密码”,如下图所示,然后进入下一步。
4、然后,完成上述步骤后,连接成功,输入如下红框中的内容,然后进入下一步。
5、随后,完成上述步骤后,查找配置文件所在的地址,如下图所示,然后进入下一步。
6、最后,完成上述步骤后,打开mysql.ini文件,将默认字符集修改为“utf8”,因为MYSQL版本不同,配置文件中的内容也不相同,只需要修改字符集设置并将其修改为utf8即可,如下图所示。这样,问题就解决了。
导入sql文件的时候 死活导不进 总归失败
max_allowed_packet就是来限制单个表的大小,而不是sql文件大小。
max_allowed_packet 针对的是一个事务中的一行记录大小,当一行记录超过了限制的大小,将会报错。sql文件中每次insert完进同一张表的所有数据被称为一个数据包(packet),max_allowed_packet就是来限制这个的大小的阈值,大于这个值,mysql的I/O连接会关闭,就会报这个错。
进入mysql 设置
set global max_allowed_packet = 1024 1024 160
导入sql文件 成功!
原来到sql 都是正常的,可能突然数据量增加,超过了单个表单的大小限制,也算学习了
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)