开卷看题
/sql%E6%B3%A8%E5%85%A52/1.png)
开幕雷击,打击我的自信心,BUT我是你能打击的人ma?
/sql%E6%B3%A8%E5%85%A52/2.png)
又是一个登录框,肯定不简单
寻找线索
CTF三剑客:看源码、看响应、扫目录
源码和响应都没什么内容,扫扫目录
/sql%E6%B3%A8%E5%85%A52/3.png)
意外收获还真不少,站点存在.DS_Store文件和一个flag文件
追寻真理
既然存在.DS_Store了,你懂得(老规矩:不想折腾环境直接上kali)
/sql%E6%B3%A8%E5%85%A52/B1.png)
与扫描目录的结果一致
访问flag文件康康
/sql%E6%B3%A8%E5%85%A52/4.png)
我靠,直接拿下???
不甘平凡
虽然说flag获得的出人意料,但是个人猜测是作者不小心搞错了文件名字导致flag文件可以直接下载(或者作者就是想告诉我们一个道理:通往罗马的路不止一条)接下来按照正常套路尝试一下
既然是登录框,很有可能是暴破或者SQLI
尝试暴破
随手测试两个用户:admin 123 和 123 123
/sql%E6%B3%A8%E5%85%A52/5.png)
/sql%E6%B3%A8%E5%85%A52/6.png)
根据提示,可以确定存在admin账户,所以接下来只需暴破admin的密码即可
/sql%E6%B3%A8%E5%85%A52/A1.png)
/sql%E6%B3%A8%E5%85%A52/A2.png)
/sql%E6%B3%A8%E5%85%A52/A3.png)
暴破发现大量密码都可以登录至后台,这显然不正常,推测后台的处理逻辑为:如果当前会话已登录则直接跳转至admin首页不再进行二次验证
如果推测正确,那么第一个验证成功的应该就是正确的密码,查看一下数据包发现序号是从小至大的,由此可以判定admin123就是正确的密码,尝试登录
/sql%E6%B3%A8%E5%85%A52/A4.png)
成功登录,此时我们发现系统提示我们输入ls,那就输入喽
/sql%E6%B3%A8%E5%85%A52/A5.png)
拿到flag(好像随便输入点什么就可以得到flag)
尝试SQL注入
从系统的提示信息推断,后台先判断用户名是否正确然后再判断密码是否正确,结合前端源码(一般前端的name属性值和后台的SQL字段基本一致)
/sql%E6%B3%A8%E5%85%A52/7.png)
结合以上信息,猜测后台处理逻辑为
1 | // WAF过滤参数 |
先测试uname字断,fuzz(模糊测试)一波,话不多说直接上图
说明:增加illegal匹配是因为WAF拦截时会提示illegal character
字典:传送门(随便找的一个)
/sql%E6%B3%A8%E5%85%A52/8.png)
/sql%E6%B3%A8%E5%85%A52/9.png)
/sql%E6%B3%A8%E5%85%A52/10.png)
/sql%E6%B3%A8%E5%85%A52/11.png)
看着结果,总感觉不对劲。。。
/sql%E6%B3%A8%E5%85%A52/1.png)
这特么还真是提示,给的都是合法的。。。。思维定式害死人
艰难的攻坚战
合法字符:!、!=、=、+、-、^、%
没有逗号,UNION查询凉凉
可以用异或查询
函数记载:
- ASCII()函数返回字符的ASCII码值
- MID() 函数用于从文本字段中提取字符
- REVERSE函数:反转字符串