运行spring boot项目(mybatis),
运行之后,报错:
### SQL: SELECT id, ...email,username FROM xx_user WHERE (username = ?)
### Cause: java.sql.SQLSyntaxErrorException: Unknown error 1146
; bad SQL grammar []; nested exception is java.sql.SQLSyntaxErrorException: Unknown error 1146
抓包,发现
确定数据库:
自己在这个数据库里查询,碰到一样的问题,看来并不是sql语句的语法问题,而是没有这个表。可能是数据库弄错了。
之前已经执行了sql语句创建了数据库,但是那个数据库跟这个程序连接的并不一样。
于是更改一下jdbc.properties文件中的连接的数据库名,重新启动。
但是又报了这个错,
com.mysql.cj.exceptions.CJException: Unknown error 1044
发现是某用户没有访问某数据库的权限,于是重新授予这个数据库给这个用户,再次启动。
然后登录:
这次终于登录成功了:
然后执行查询的时候又发现这个:
java.sql.SQLSyntaxErrorException: Unknown error 1054
字段不存在,原来是请求某个请求时,
会执行这个SQL语句:
而我们现在并没有这些字段:
于是手动创建它,并插入数据(不然哪儿来的sqli)
CREATE TABLE IF NOT EXISTS `sys_function`(`id` INT UNSIGNED AUTO_INCREMENT,`dsource` VARCHAR(100), `createtime` VARCHAR(100), `isedit` VARCHAR(100), `name` VARCHAR(100), `tname` VARCHAR(100), `menuid` VARCHAR(100), `isadd` VARCHAR(100), `isdelete` VARCHAR(100), `type` VARCHAR(100), `isexport` VARCHAR(100), PRIMARY KEY (`id`));
INSERT INTO sys_function(id,dsource,createtime,isedit,name,tname,menuid,isadd,isdelete,type,isexport) values (1,'1','1','1','1','1','1','1','1','1','1');
create table `sys_dsource`(`id` INT UNSIGNED AUTO_INCREMENT, `status` VARCHAR(100), `dbname` VARCHAR(100), `comment`VARCHAR(100), PRIMARY KEY (`id`));
insert into sys_dsource(id, status, dbname, comment) values(1, '1', '1', '1');
这下就有值了:
使用这个请求:
pageSize=10&pageNumber=1&order=desc&sort=if(1=1,sleep(1),1)
发现只sleep了1s
看看流量里的sql语句是啥:
参考:
- MySQL常见错误代码(error code)及代码说明
- mysql最常用最基础的命令
- https://www.runoob.com/mysql/mysql-create-tables.html