第29关使用GET请求提交参数,在url中构造payload即可
源码中并没有做什么过滤,直接测试注入点即可
![](https://img-blog.csdnimg.cn/20210816122037557.png)
![](https://img-blog.csdnimg.cn/20210816122050179.png)
在url中输入 1'and true-- a,源码中的SQL会拼接成下面这样
![](https://img-blog.csdnimg.cn/20210816122409648.png)
注释后面的内容不起作用,所以真正执行的SQL是这样的
![](https://img-blog.csdnimg.cn/20210816122524657.png)
and后面的true会使SQL恒成立,SQL正常查询出用户内容,并在页面显示出来
![](https://img-blog.csdnimg.cn/20210816122659873.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dXhpYW5nOTQ2,size_16,color_FFFFFF,t_70)
接下来再输入 1'and false-- a,参数拼接到SQL中是下面这样的
![](https://img-blog.csdnimg.cn/20210816122945451.png)
由于注释后面的内容不起作用 ,所以真正执行的SQL应该是这样的
![](https://img-blog.csdnimg.cn/20210816123019613.png)
and后面的false使SQL恒不成立,SQL查不出用户信息,从而导致页面空显示
![](https://img-blog.csdnimg.cn/20210816123057569.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dXhpYW5nOTQ2,size_16,color_FFFFFF,t_70)
用户的参数能够使SQL恒成立或恒不成立,从而控制SQL执行的结果,由此可知存在SQL注入,注入类型为单引号字符型注入,页面有显示位,我们可以使用联合注入进行脱库
-1' union select 1,2,
(select group_concat(schema_name)from information_schema.schemata)
-- a
- 因为用户id不为负数,这里id写成-1会导致查询不到用户信息,从而展示后面联合查询的结果
- group_concat()用来将多行结果合并成一行,并使用逗号分隔
![](https://img-blog.csdnimg.cn/20210816124216397.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3dhbmd5dXhpYW5nOTQ2,size_16,color_FFFFFF,t_70)