源码展示,此源码已经避开其中的html代码仅有php代码
这里我们不难看出当我们输入id=1,id=2时会出现类似界面的不同字段这时我们可以尝试以id作为注入点尝试注入
步骤一:判断其sql注入类型,字符类 或 数字类
经上述我们已经知道id=1显示应为dumb,这里若是数字型则应显示与id=1是统一界面但确实和id=5是同一界面故而可以初步判定为字符型
确定可能是字符型后,接下来我们开始尝试字符的闭合手段是什么
“ ' ”闭合失败尝试别的闭合方式
使用 ‘)方式可以闭合成功,这里显示列数不足,这是因为没有对应上表中的列,但可以判定闭合成功且可以使用联合查询
经尝试select后面要输入三个字段才会正确使用联合注入漏洞,和数据库产生了交互手工注入成功
注第一关和第三关只是闭合条件不一样,思路基本一致
总结,初学状态可能会纠结
1.我怎么确定有没有sql注入漏洞?
2.为什么有的网站有类似?id=字段但是却sql注入不出来?
3.我如何判定闭合是什么
解答1:无法判定是否有sql注入漏洞渗透测试本身在于尝试,我们只能说具有什么漏洞的特征,根据猜测去尝试有没有,并加以证明
解答2:这是因为有些页面是静态的,即没有和后端数据库做交互参数不会传入后端这时就没有sql注入漏洞
解答3::无法判定闭合条件是什么,除非可以看到源码,但渗透测试时几乎不会看到源码,这也是一个大胆假设小心求证的过程