加了料的报错注入(实验吧)
题目直接告诉了我们注入点存在于我们post进去的两个变量,即username和password当中,f12查看源码后得到提示,sql语句是以单引号的方式进行闭合的后进行注入测试。
首先对username进行注入,经过初步测试对“=”进行了过滤,采用“<>”进行绕过。
显示虽然waf被绕过Username中依旧存在问题,将注入语句修改到password当中。
显示password error,也就是说我们的username和password都存在着不符合题目要求的地方,我们将报错函数extractvalue分别放在username和admin当中。
我们可以总结出来extractvalue()只能存在于username当中,同理我们还发现了"()"只能存在于password当中
现在存在于我们身上的问题就是如何实现一句注入语句如何通过两个变量生效。但我们根据题目提示的注入语句,我们可以发现sql=“select from users where username=‘username’ and password=‘password’,如果我们使用/*这个代表空格的符号对注入语句进行改造。payload:
其实此时执行的语句为username=1’or extractvalue(1,concat(0x7e,(select group_concat(table_name)from information_schema.tables where table_schema=database()),0x7e)),”//“中间的内容被注释掉了。
对语句改造并查询后
并没有得到我们想要的结果,在询问了班上的同学之后才知道问题存在于我的“<>”当中,它并不能取代”="的作用。
因此我们还是采用"regexp"的方式对等于号进行绕过