时间-i春秋

记一道跑脚本的题
进入页面拿到一段代码。

<?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+'\n')
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+ )

猜你喜欢

转载自www.cnblogs.com/HelloCTF/p/12763465.html