pikachu靶场通关秘籍之SQL
Sql Inject(SQL注入)介绍
在owasp发布的top10排行榜里,注入漏洞一直是危害排名第一的漏洞,其中注入漏洞里面首当其冲的就是数据库注入漏洞。
**一个严重的SQL注入漏洞,可能会直接导致一家公司破产!
SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!
SQL注入在网络上非常热门,也有很多技术专家写过非常详细的关于SQL注入漏洞的文章,这里就不在多写了。
数字型注入(post)
第一关,选择查询的id然后点击查询就能查询到数据,这时候我对查询进行抓包。
右键 Send to Repeater
我们在id这块进行测试,在后面添加 or 1=1 发现有注入点:
字符型注入(get)
输入想查找的东西,点击查询进行查找,这边我们直接在输入框中进行测试,和上题一样输入 lili or 1=1#,发现有注入点:
xx型注入
和上题一样 ,输入**lili\**破坏其内部数据库语句结构
“insert/update”注入
这边我们点击注册,在用户栏进行注入。payload为:1’ and extractvalue(1,concat(0x7e,database())) and ‘
“delete”注入
这里是一个留言板,我们随便写一点东西进去,鼠标移到 删除 在左下角可以看到id=60,说明我们的数据是有id头的,所以点击删除抓包。
我们在id=60后面注入即可:
“http header”注入
有些时候,后台开发人员为了验证客户端头信息,比如常用的cookie验证,或者通过http请求头信息获取客户端的一些信息,比如useragent、accept字段等等,会对客户端的http请求头信息获取并使用sql进行处理,如果此时没有足够的安全考虑,则可能会导致基于http头的sql注入漏洞
首先,我们点击 点击退出 抓包
在User-Agent进行注入,payload为1’ and extractvalue(1,concat(0x7e,database())) and ‘
盲注
时间盲注主要使用if语句,通过延迟信息进行判断,不看回显信息,这里就不多说了,使用SQLMAP效果更佳,手动测试难免有误差。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 是苹果啊!