SQL注入 POST注入(less-11)
万能密码
1.xxx’ or 1 = 1#(最后的#可以换成-- (记住如果是-- 的最后有个空格))
【这种是比较通用的】
2.xxx’ or ‘1’ = ‘1(最后可以加#或者加-- (记住如果是-- 的最后有个空格))
3.xxx” or “1” = “1
4.xxx”) or (“1”) = (“1
5.…
具体万能密码的使用得根据sql语句的情况来使用,一般第一个是通用的。以下分析几个情况:
(1)如下:我们发现’fasf’附近出错,说明是用’包着,此时则可以使用第一种或者第二种,第一种直接注释掉了后面的’,第二种是以为被’包着,逻辑的数字1也要’包着(为了对应后面一个1能够刚好被引号包着)
如图将成功登录:
(2)如下:我们发现’afa”)附近出错,说明是”)包着的,此时可以用第一种或者第四种,与上面同理。
当然,使用万能密码只是为了知道数据是被怎样包着的,知道了以后就可以直接登录了,如图,展示了不用万能密码,直接根据其包着的性质成功登录:
注入信息(less-11)
在用户名密码框当中同样是通过select语句进行查询,只不过从原来的get方法改成了post方法,此时也可进行注入。
此时不需要order by,直接可确定只有两列(因为这里只有username和password),例如输入如下语句即可得到所有用户名:
1admin") union select 1,group_concat(username) from users#)
【首先用户名要输入一个不存在的,这样才能输出数据库的内容,跟id=-1一个道理,其次因为只有两列,所以select 1,2就行了,结果如下图】
上面展示的是正常注入,当然如果无法显示出信息时,也是可以在这个框里面进行盲注的。
在修改中注入查询(less-17)
当进行密码修改等时候,就不是使用select查询语句了,这个时候则是通过update语句等来实现,这个时候同样可以进行注入
此时一般是选择修改成新信息的框来进行测试和注入,例如一个修改语句:UPDATE xx’.’xxxx’ SET
password='pass1' WHERE
name`='name1';我们可以看到其根据name来修改password,如果在下面一个图的name里输入内容,则会对应到上面语句的name1里,同理password里的内容则对应到pass1里,所以如果要测试或注入就要从password的框里面弄。
如果发现存在漏洞进行注入时,因为是使用的update语句,无法用union进行联合查询,所以只能通过使用盲注方法来实现查询数据内容,如图:
【注:如果name和password都被加了check_input()函数,则都无法注入】