SQL注入约束攻击
🗂️

SQL注入约束攻击

Published
March 27, 2023
Category
渗透测试
Subcategory
渗透测试方法与策略
Tags
SQL注入
约束攻击
演示
Author
KK
Notes
当数据库字符串长度过短,并且后端没有对字符串进行长度限制时
CREATE TABLE users( username varchar(20), password varchar(20) )

漏洞代码逻辑如下:

代码由登录和注册构成
  1. select * from table where username='$username'检测你输入的用户名,如果存在,说明你注册过,那么不让你注册。
  1. 用户名不存在,用 insert into table values('$username','$password')把你输入的用户名密码插入数据库。
 
  • INSERT和SELECT语句执行不一样造成
  • INSERT语句:截取前20个字符
  • SELECT语句:输入什么就是什么
当我们注册时字符串长度超过20,那么使用SELECT检测时就会不存在,那么就使用INSERT插入,这时候由于长度超过20,截取前20个字符。
大致流程:注册admin a -> SELECT认为不存在 -> INSERT了前20位 -> 使用自己注册的admin和对应密码进行登录 INSERT插入了admin+15空格,实际上是插入了admin,末尾的空格会被MySQL忽略掉,这样就修改admin的密码了