2017第二届广东省强网杯线上赛:WEB phone number (SQL注入)
解题思路
拿到题目的时候,只有一个登录界面

拿到登录界面,而且还伴随着有注册界面,联想到SQL的二次注入漏洞
尝试注册admin'#,并使用admin登录,发现登录失败,说明可能不存在SQL二次注入
注册之后,登录进去,在check.php页面查看源代码的时候发现有一个关于admin的注释:

可能是编码不一致的问题,打开Notepad++,先选择使用ANSI编码,粘贴之后,再使用UTF-8编码,得到内容:

可能关键的信息在admin的电话,看来必须要知道admin的电话才行。
当前页面很少,想着如果可以看源代码是不是有解题思路,于是使用dirsearch扫描了一下,希望能有个源代码文件:
在访问了所有的文件后,事与愿违,并没有源代码文件,但是db.php仍然暗示了需要使用SQL注入
通过一番寻找,由于页面暗示了电话问题,所以我们猜想可能注入点在电话中
为什么?且看图

空色框内的变量2显然就是查询数据库之后的结果,所以这个2很可能就是回显点
而在整个靶场中,唯一能够让我们控制电话的只有register.php界面。
再次打开register.php界面,进行html的代码审计(因为得不到php源代码):

显然必须要查看form表单

这很正常,在注册界面里面,设定电话号码的长度是11
但是,对于hack来说,长度为11显然限制了我们的手动直接在页面注入,这就是此地无银三百两的细节
好,我们输入SQL注入语句,报错,原因是,它必须要数字:

所以系统会对非数字电话进行过滤
办法是转换成二进制或者十六进制(二进制经过测试不能成功,且看16进制)。

将SQL注入语句转换成16进制,记住,一定要在前面加0x

发送成功,然后我们登录查看一下

我们刚刚输入的内容在回显栏里面,点击check

相比于刚才,多了一条语句:There only 1 people use the same phone as you
同时也证明了两点,只有一列可以回显,而且是数字型注入。
于是之后就可以构造查询语句:





最后再查一下phone,就可以找到flag了

此外,在查询的时候,遇到错误会统一报错为db,error
这样下来,报错注入就行不通了,即不能用xmlupdate
总结
做这道题遇到的障碍以及解决方法
| 障碍 | 方法 |
|---|---|
| 不能及时判断SQL注入点 | 在找到注释提示admin的电话号码的时候,以及在页面告诉说有多少人和你是同一电话号码的时候,在电话号码只能输入11位的时候,在电话号码过滤非数字的时候,都在暗示,这是一个SQL注入点 |
| 不能及时绕过非数字过滤 | 绕过非数字检测过滤的方法就是将字符串转换为数字,最常见的就是二进制和十六进制 |
| 不能及时判断SQL数据库结构 | 从小到大,从第一列开始判断,即select 1开始,随后增减列数,一定要在后面添加注释 |
| 不能准确使用SQL语句注入 | 如果报错结果为同一特定文字,那么报错注入大部分情况下没有用 |
2017第二届广东省强网杯线上赛:WEB phone number (SQL注入)的更多相关文章
- 2017年第二届广东省强网杯线上赛WEB:Musee de X writeup(模板注入漏洞)
目录 解题思路 总结 解题思路 拿到手上,有四个页面 首先按照题目要求执行,尝试注册一个名为admin的账户 这种情况,路径都给出来了,很可能就是目录遍历或者文件上传了 回到初始界面,点击链接here ...
- 2017第二届广东省强网杯线上赛--Nonstandard
测试文件:http://static2.ichunqiu.com/icq/resources/fileupload/CTF/echunqiu/qwb/Nonstandard_26195e1832795 ...
- 2019 第三届强网杯线上赛部分web复现
0x00前言 周末打了强网杯,队伍只做得出来6道签到题,web有三道我仔细研究了但是没有最终做出来,赛后有在群里看到其他师傅提供了writeup和环境复现的docker环境,于是跟着学习一波并记录下来 ...
- 庞果英雄会第二届在线编程大赛·线上初赛:AB数
题目链接 给定两个正整数a,b,分别定义两个集合L和R, 集合L:即把1~a,1~b中整数乘积的集合定义为L = {x * y | x,y是整数且1 <= x <=a , 1 <= ...
- RobotCraft 2017 第二届国际机器人学暑期学校 2nd Edition of International Robotics Summer School
原文网址:http://www.ros.org/news/2017/02/2nd-edition-of-international-robotics-summer-school-robotcraft- ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 H题 Rock Paper Scissors Lizard Spock.(FFT字符串匹配)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- 2018 ACM-ICPC 中国大学生程序设计竞赛线上赛 F题 Clever King(最小割)
2018 ACM-ICPC 中国大学生程序设计竞赛线上赛:https://www.jisuanke.com/contest/1227 题目链接:https://nanti.jisuanke.com/t ...
- “玲珑杯”线上赛 Round #17 河南专场
闲来无事呆在寝室打打题,没有想到还有中奖这种操作,超开心的 玲珑杯”线上赛 Round #17 河南专场 Start Time:2017-06-24 12:00:00 End Time:2017-06 ...
- 2021广东省强网杯WriteUp
个人赛 网络诈骗 参考 https://github.com/Heyxk/notes/issues/1 先把EnMicroMsg.db提出来 CompatibleInfo.cfg是0kb,用第一种方法 ...
随机推荐
- mysql几种连接方式区别
mysql的几种join 2017年03月19日 14:49:07 carl-zhao 阅读数:7845 标签: mysqlsqljoin 更多 个人分类: MySQL 版权声明:本文为博主原创文章, ...
- JAVA集合类(代码手写实现,全面梳理)
参考网址:https://blog.csdn.net/weixin_41231928/article/details/103413167 目录 一.集合类关系图 二.Iterator 三.ListIt ...
- 输入npm install 报错node-sass@4.13.0 postinstall:`node scripts/build.js` Failed at the node-sass@4.13.0
这个是因为sass安装时获取源的问题,先修改sass安装的源,再运行npm install就成功了 npm config set sass_binary_site=https://npm.taobao ...
- Go与接口:接口即约定
接口 接口类型是对其他类型行为的概括与抽象.我们可以通过接口来约定某一类通用行为.Go语言的接口是隐式的:只要实现接口A的所有方法就代表实现了接口A. 接口即约定 接口是什么样的? package i ...
- Linkerd 2.10(Step by Step)—配置代理并发
Linkerd 2.10 系列 快速上手 Linkerd v2 Service Mesh(服务网格) 腾讯云 K8S 集群实战 Service Mesh-Linkerd2 & Traefik2 ...
- Win10安装gcc
使用MinGW安装gcc 1.下载MinGW,地址 https://sourceforge.net/projects/mingw/files/ ,选择Download mingw-get-setup. ...
- Mybatis笔记(3)
一.多表查询 1.1 一对一查询 订单和用户(一个订单属于一个) Order实体类有user属性 配置resultMap(OrderMap) <select id="findAll&q ...
- MySQL主主互备不同步的解决方法
MySQL主主互备不同步 首先在服务器上执行show slave satus;可以看到很多同步的参数: Master_Log_File: SLAVE中的I/O线程当前正在读取的主服务器二进制日志文件的 ...
- uni-app中websocket的使用 断开重连、心跳机制
前言 最近关于H5和APP的开发中使用到了webSocket,由于web/app有时候会出现网络不稳定或者服务端主动断开,这时候导致消息推送不了的情况,需要客户端进行重连.查阅资料后发现了一个心跳机制 ...
- 完蛋,公司被一条 update 语句干趴了!
大家好,我是小林. 昨晚在群划水的时候,看到有位读者说了这么一件事. 在这里插入图片描述 大概就是,在线上执行一条 update 语句修改数据库数据的时候,where 条件没有带上索引,导致业务直接崩 ...
