AI智能摘要
你是否曾在CTF比赛中卡在一道看似“什么都没有”的谜题前?页面只显示“We han't anything!”,但源码中暗藏玄机——robots.txt指向shell.php,一个动态变化的MD5前六位验证正等着破解。这不仅是技术较量,更是耐心与字典的比拼。本文揭秘如何用Python脚本自动生成MD5字典并快速爆破,手把手教你从零拿到flag,洞悉CTF出题人的隐藏逻辑。
— AI 生成的文章内容摘要
打开页面发现一串提示~~~

说什么都没有,查看一下页面源代码

发现应该有个robots文件,去访问看看

又发现了一个shell.php,哎,出题人真烦。。。访问shell.php、、、、

这个返回页面中的式子意思就是在输入框输入一个字符串,然后将输入的字符串进行mad5加密,然后取出前6位,要正好等于后面的这个字符串,就能成功拿到flag,这里需要注意,每刷新一次页面或者提交一次,等号后面的值会变一次。

这个题真的是没有什么意思,只要你的md5字典够强,手动搜都能搜到,于是我随便拉个一个密码字典,再写个Python脚本对密码字典中所有的字符进行加密,再手动搜就可以了。。。。。。(当然也可以一个python脚本一次到位,但是我太懒,实在是不想浪费时间再这种题上了)

拿到flag。。。。。

Python字典生成脚本。。。。
#coding:utf-8 import hashlib,os import requests DIC = [] Source_list = open('ip.txt','r') result1 = open('result.txt','w') result2 = open('haha.txt','w') def fileRead(): global DIC for line in Source_list.readlines(): line = line.strip('/n') DIC.append(line) #print DIC #arg = 'dmn19800707' def md5_key(arg): hash = hashlib.md5() hash.update(arg) return hash.hexdigest() fileRead() for i in DIC: haha = i print i r = md5_key(i) r2 = r result1.write(r2) result1.write('=') result1.write(haha) result1.write('/n') result1.close() result2.close() Source_list.close()
Python自动获取flag......
#coding:utf-8 import hashlib,os import requests,re url = 'http://123.206.31.85:3030/shell.php' s = requests.session() DIC = {} #Source_list = open('md5_dic.txt','r') answer = '' def fileRead(): for line in Source_list.readlines(): line = line.strip('/n') md5 = line[0:6] flagstr = line[34:50] DIC[md5] = flagstr # print DIC[md5] def getmd5(url): con = s.get(url) response = con.text print response md5 = re.findall('=......./<',response) print md5 md5 = str(md5) md5 = md5[5:11] print type(md5),md5 return md5 def searchmd5(MD5): if MD5 in DIC.keys(): answer = DIC[MD5] return False else: return True def getflag(payload): payload = {'password':payload} get = s.get(url,params=payload) print get.text #fileRead() while searchmd5(getmd5(url)): getflag(answer) break #Source_list.close()

韩国 1F
这题纯属体力活,字典够大直接撞库就行😂
浙江省衢州市 2F
求问这个脚本里的ip.txt是啥?自己生成的吗?
泰国 B1
@ 茶香满溢 估计是自定义的密码字典文件
北京市 3F
md5前六位碰撞也太随意了,刷新一次换一次,烦死了
福建省 4F
之前搞过类似的,也是写个脚本跑字典,折腾了好久
湖南省衡阳市 5F
这出题人怕不是懒到极致,直接靠脚本解还标啥CTF?
福建省漳州市 6F
那个啥,flag拿到了有奖励吗?还是纯练手?
泰国 7F
说白了就是个哈希爆破,没啥技术含量,练手还行
广东省广州市 B1
@ 时间褶皱 练手题而已,别太较真
广东省 8F
我用rockyou字典跑了一晚上,结果发现前六位根本用不着那么大?
湖北省荆门市 9F
haha.txt是干啥的?看代码没太明白,有大佬解释下不?
天津市 10F
太贵了吧这也,为了个flag搭这么多环境,真折腾
浙江省丽水市 11F
这代码写得有点糙啊,result1.close()写循环里了?
辽宁省沈阳市 12F
md5前六位碰撞确实太简单了,随便找个在线网站都能破
香港 13F
re.findall那个正则感觉写的有问题,等号后面可能匹配不全
陕西省西安市 14F
为啥要用ip.txt当字典?这命名也太迷惑了🤔
四川省泸州市 15F
这种题新手练手还行,老手直接秒破
印度尼西亚 16F
之前遇到过更坑的,要碰撞前8位,跑了两天服务器
新疆乌鲁木齐市 17F
所以最后flag是啥?有实际意义吗
河北省石家庄市 B1
@ 憨包谷 就是个测试flag,没实际意义
广东省阳江市 18F
这环境配置看着就头大,docker能直接拉现成的不
北京市 19F
脚本里result2根本没写入操作,纯摆设啊
湖南省郴州市 20F
图片里那个拼写错误是故意的吧,CTF老套路了
天津市 21F
这代码result1.close放循环里太草率了吧
北京市 22F
图片里那拼写错误绝对是出题人故意的🤔
广东省广州市 23F
用ip.txt当字典名也太抽象了,完全看不懂逻辑
澳大利亚 24F
有没有更简单的解法?非得写脚本吗?
上海市静安区 25F
之前碰到的md5题要撞8位,跑得我电脑发烫
广东省 26F
re.findall那个正则确实有问题,等号后面可能漏字符
北京市 B1
@ 铃兰花 这正则真得改改,等号后面加个+保险点
山东省济南市 27F
这脚本写得有点绕,能直接贴最终payload不?
美国 B1
@ VictorianEstate payload就是密码字典里的字符串,比如‘admin123’
韩国 28F
这种题做多了就腻,纯属重复劳动
日本 B1
@ Velvet Sonnet 纯练手题,没啥实际意义
广东省广州市 29F
flag拿到了有啥用?能兑换奖品吗?
韩国 30F
docker能直接部署环境不?手动配太麻烦了
新疆克拉玛依市 B1
@ 粉红小猪 docker拉个现成镜像省事多了,何必自己配
日本 31F
为啥要用haha.txt?代码里根本没写东西进去啊
江西省 32F
用字典爆破确实有点笨,但管用就行