显错注入
0x00 代码审计:
在20行,将get传参的值赋值给了变量id,在第29行直接拼接进sql语句中执行,中间没有任何的防护过滤。所以此处存在sql注入。
0x01 靶场复现
若用户传入的id值为 1 ,则此时执行的sql语句为
SELECT * FROM users WHERE id='1' LIMIT 0,1
若传入的值为 1’ :
SELECT * FROM users WHERE id='1'' LIMIT 0,1
则会多出一个单引号造成语法错误
因此可以构造语句,注释掉后面内容,达到执行SQL语句。
传入 1’ order by 10 –+q
服务器执行的sql语句就成了
SELECT * FROM users WHERE id='1' order by 10 --+q' LIMIT 0,1
order by 10 就是构造的语句。
评论