提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
原因
危害
如何挖
寻找注入点
测试是否有绕过
分别输入不同的参数,看看返回的结果是否一致,若不一致则说明我们输入的参数被数据库后台执行了,说明没有sql注入的相关绕过。
小知识:构造“轮子”[专业名词] if(a,b,c)–表示如果a成立则输出b否则输出c。
【要求自主掌握哪些语句会被waf屏蔽】【收集不容易被过滤的sql函数】
实质
分类
步骤:1.判断是数字注入还是字符注入类型——输入’如果错那么就为字符型(因为报错是由’xxx’为假所导致的),反之为数字型。
2.查找注入点——看在那个地方修改参数会出现1的情况哪里就是注入点。
3.找显示位(由于计算机web的报错特性,当你的语句为假时若后面跟了联合查询语句则会只输出对应显示位上的为真的那部分联合查询语句的内容,故可以用union select 1,2,3,4…来确定web的显示位是多少)。
4.找出web对应数据库的表名(获取数据第一步)如图:
【注意】一切查询语句都要以mysql数据库的结构为基础进行。
sqli靶场
小技巧:将sql注入的源码显示到页面上
盲注
先用bp抓包测试注入不同值时返回值的变化来判断是否存在sql注入,例如输入id=1’与id=1’'时页面的返回值不同则说明页面后台执行了我们注入的语句——说明有sql注入漏洞。
确定有sql注入以后,我们想要进一步获取该页面的信息,开始整活!
获取用户名的长度:
1.制造轮子【bp中的+表示空格,–+表示注释掉后面的语句】
if(length(user())=12,1,0)--+
当然一般不会单纯的随便输入一个数就蒙中啦,这时候就该bp的遍历爆破功能上场啦!
找出那个回显不一样的值,就是我们的目标!
几种爆破:
时间盲注
注入sleep语句(沉睡吧哈哈),观察页面的相应时间,如果时间不同那么就说明存在时间盲注。
确认存在注入以后,嘿嘿,那就不好意思了,直接开始更换参数并与爆破 相结合来获取信息:
最好延长sleep中的值,来减少误差:
判断表名长度:
别人的总结
UA注入
referer注入
DNSlog外带
cookie注入
更改cookie的传参,如果报错或者没有显示原来的页面,则说明存在cookie注入。
宽字节注入
堆叠注入
sqlmap工具
getshell
access注入
bypass姿势
mssql
getshell
通过sqlserver提权