方法一:
就是按部就班地找报错、注入语句、在数据库中找flag:
标题显然在暗示存在sql注入漏洞:
存在字符型注入点。
接下来就是按照套路来注入了:
测试存在三个注入点;
爆数据库名的时候就出flag了。果然是easysql。
方法二:(万能密码)
这个方法时我在别人的博客上看到的:
如果只是要登录上去的话,只要想办法让后端对传过去的帐密检验的结果为true即可。稍微试一下就可以发现存在sql字符型注入漏洞,所以可以这么构造payload:
username=admin' or '1'='1&password=ps' or '1'='1
由于or的逻辑,对账号密码的判断将是一个恒真的值。顺利登入拿到flag.
总结:
- 注入未必要按部就班去爆数据库。注入也可以是一种绕过、getshell的手段。
- 这里记一个踩过的坑:
浏览器会自动把空格转为%20,这就导致我之前在写order by 3 --的时候被浏览器转义为‘......by%203%20--’,导致怎么也注不出来,一直报错。
改成order+by+3+--
就行了