前两天写了个比较简单的login登陆页面,输入username和password,通过输入的username查询数据库中的password和框中的值进行对比验证
测试
先输入一对值,admin,123456,弹出信息
果然,意料之内用户名或密码错误,但是我们从这次测试能看出一点,这个数据传输的方式是post,
注入测试
先试一下SQL注入
还是没用,而且什么信息都没给,估计它本身并不返回任何值,只是进行判断输出正确还是错误
联合注入
既然根本不返回任何值,想爆库或者爆表基本上也是不可能的了,只能想办法绕过验证。绕过验证基本思路是这样,如果在数据库中执行select 1语句,输出的值肯定是1,那我就想办法让我不管输入什么username的值,都查不到对应的password,但是通过union select 1使查出来的password值就是1
这语句很简单就不说了,也可以不是1,是任何值都行,只要password与其对应
总结
最终注入成功不是通过拿到数据库中的内容,而是绕过了验证,如果想拿到数据库的内容可以通过延时注入,通过先猜数据库名长度,再猜数据库名,猜表名长度,再猜表名,......总之很复杂,就不演示了
最后忠告各位黑阔大牛,不要在危险的边缘试探,及时收手
看起来很简单的样子,然而实际操作,可能就呵呵了
<script>alert(1)</script>
兄弟,想XSS我?不存在的