解题思路

拿到题目的时候,只有一个登录界面



拿到登录界面,而且还伴随着有注册界面,联想到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语句注入 如果报错结果为同一特定文字,那么报错注入大部分情况下没有用

最新文章

  1. 纯JS实现俄罗斯方块,打造属于你的游戏帝国
  2. oracle 安装
  3. 去除项目中的SVN标记
  4. zipArchive
  5. 将STM32的标准库编译成lib使用【图文】
  6. java-GUI图形用户界面
  7. Leetcode: Lexicographical Numbers
  8. js,replace() 和 正则表达式(regular expression)
  9. Linux软件大全
  10. 【转】Ubuntu Linux 下文件名乱码(无效的编码)的快速解决办法
  11. CCPC L(水)
  12. windows phone (14) 简单了解Ellipse元素和Rectangle元素
  13. C#启动进程之Process
  14. 【.NET】SQL链接字符串
  15. Java基于Socket文件传输示例
  16. IO流之字节流知识总结
  17. centos7下安装apache服务器httpd的yum方式安装
  18. Kivy之常用的小知识
  19. 撩课-Web大前端每天5道面试题-Day1
  20. 关于怎么解决java.lang.NoClassDefFoundError错误

热门文章

  1. 【mysql】截取查询分析
  2. uwp 自定义语音识别规则
  3. C#多线程---ReaderWriterLock实现线程同步
  4. WPF 中的 经典的ModelView 通知页面更新 UI
  5. SpringCloud商品服务调用方式之Ribbon
  6. Difference between trustStore and keyStore in Java - SSL
  7. 第13篇-通过InterpreterCodelet存储机器指令片段
  8. Ubuntu 16.04LTS安装flashplayer
  9. 正整数a、b、c、d满足ab=cd,则a+b+c+d必定为合数。
  10. MySQL大数据迁移备份