Sql约束攻击

字符串存储时若发生“溢出”,mysql会自动truncate到最大宽度。 空格在varchar里面会被自动删除。

例:

CREATE TABLE `users` (
   `username` varchar(64) DEFAULT NULL,
   `password` varchar(64) DEFAULT NULL
 );

则:

username='test'
username='test                                      '#后面有空格,空格会被自动删除
username='test                                   123'#后面有超出64个字符的空格。溢出的字符会被'截掉',空格被自动删除

是等值的

攻击示例: 直接注册

usr:admin
pwd:admin

提示admin已存在 则注册

usr:admin                                                          123
pwd:admin

和admin不重名但在存储时会将空格以及空格后内容去除,此时更改的密码也一并存储

题目参见http://natas27.natas.labs.overthewire.org/index.php
level: natas27, pass: 55TBjpPZUUJgVP5b3BnbG6ON9uDPVzCJ 解答参见http://www.cnblogs.com/liqiuhao/p/6906474.html​


其他payload: 大小写:

username='Admin'
只加空格
username='admin                        '