那些年踏过的CTF坑--GetFlag~(三)

xiaoxiao2021-02-28  10

遇到一个写脚本的CTF了,刚刚开始我还以为需要SQL注入之类的,但是分析网页源码发现没有action操作,应该是本文件自己提交,自己验证的!具体情况如下: 访问IPhttp://106.75.26.211:2222/ 呃呃呃~很简单的页面,只有一个login的登录按钮,网页源码没有什么特别的,所以直接访问下一个页面,看看有什么妖气! 一个登录页面,经过分析,就像刚开始所说的一样,但是页面中有一个验证码函数,但是经过md5加密后只给我们返回了前面六位数;这样来看我一开始就错了,原因是,输入验证码一直都是错的,输入的一直都是他加密后的前六位,所以我需要写脚本爆破这个验证码: 思路是:只给我们验证码md5加密后的前六位,验证码是多少位不知道,纯数字?还是有字母,都没有告诉我们,所以就先预计只是纯数字,位数不知道,但是通常是4位数以上,所以就先谢谢。python脚本!

# coding:utf-8 import hashlib list='0123456789' for a in list: for b in list: for c in list: for d in list: for e in list:#5位数 for f in list: # 6位数 for g in list: # 7位数 str4=(a+b+c+d+e+f+g) value = hashlib.md5(str4) value1 = value.hexdigest() #print (value1) s4 = value1[0:6] # print (s1) if s4 == '3d5e20':#写入从页面中获取6位数 print ('end'+ str4)

脚本很简单,创建一个list字符串集,使用for循环,先循环4次,然后将这四个数字拼接起来,使用md5加密,加密后截取前面6个数字,然后将这六个数字和网页给我们的数字相互比较,如果相等,就输出结果;就这样我从循环4次一直循环了7次,才得出比较靠谱的结果,但是结果也不确定,需要多试几次才行; 如:我这里给我的前6位是“9c31b8”,那么就将这数字,带入代码中爆破,但是可能会得出多个结果,需要我一个一个的试,或许提交之后是错误error”,就需要重新刷新页面,获取新的6位数,带入到代码中来重新爆破,虽然很麻烦,但是总会得出结果,做CTF需要的是耐心,需要各种分析,各种尝试。 接下来就填写爆破出的验证码,这里不知道username,password,但是可以使用万能密码来试试!username:admin’ or ‘1’ =’1 password:随便写 很幸运提交成功了! 当弹出提示框了,就成功登陆了! 页面返回了一个可以下载文件的列表!先不管这是神马,把所有文件下载到本地再说!然后一个一个的看!其中a.php中有提示: flag.php在网站根目录下!访问一下,是可以访问的 这里该怎么做呢?这里不是文件包含,不能使用文件流读取文件了!但是这里有下载文件,那么就将这个文件直接下载下来吧!获取下载文件的路径:http://106.75.26.211:2222/file/download.php?f=a.php直接下载flag.php文件试试? 发现这样下载不得行!什么原因呢?flag.php在根目录,但是这里不是在根目录!所以要返回到根目录去下载: 提示不对,没有下载下来,这是为什么呢?应该是做了限制,那么我就直接用绝对路径试试!那么绝对路径是什么呢?先看看有没有phpinfo.php 这里没有phpinfo.php,但是返回的信息很有用!这是Ubuntu的系统,Apache的服务器,所以路径很好找了:/var/www/html 然后我们就访问flag.php并下载。 胜利在望了,查看flag.php源码,看看有什么: 这是源码,源码告诉我,需要传递一个flag参数,然后进行过滤,如果flag=flag,就可以获取flag了。 但是没有返回任何东西!换一个工具试试,burpsuite试试: flag后面需要添加分号!才能返回flag

转载请注明原文地址: https://www.6miu.com/read-2107570.html

最新回复(0)