“百度杯”2017年春秋欢乐赛-----时间

=============================

个人收获:

1.show_source(),file_get_contents(),mt_rand(),file_put_contents(),unlink()函数的意思

2.python的MD5加密写法

=============================

题目:

解释下源码的大概意思

show_source() :函数对文件进行语法高亮显示

取COOKIE里面token的值 如果等于 hello,就执行下面的代码

file_get_contents() 函数把’flag.php‘文件读入到$txt变量中

mt_rand()是取随机数的,与rand()区别是比rand()快4倍,而且如果mt_rand(1,10)的话1和10都会取得到的

通过md5对mt_rand取值的加密然后通过拼接'u/'和'.txt'得到文件的名字存入到$filename中

file_put_contents() 函数把$txt存的内容写入到$filename的文件中取

然后休眠10秒

unlink() 函数删除文件

就说明我们访问这个网站的时候,在网站目录里面会随机生成一个文件包含flag.php的内容,但是我们只有10秒的时间取访问它,10秒过后会自动删除。

所有我们来跑目录,这里我们需要把所有会出现的文件名的可能性都列出来当成字典来跑

python源码如下

import hashlib
import requests
file = open("data.txt",'w+')
for i in range(1,1001):
  m = hashlib.md5()
  m.update(str(i).encode())
  mid = m.hexdigest()
  url = 'u/'+mid+'.txt'
  file.write(url+'\n')
file.close()

python 文件各种权限对照表

这里的md5加密就是python正常的md5加密流程

md5加密:
 hash = hashlib.md5()
 hash.update('admin'.encode('utf-8'))
 print(hash.hexdigest())
 21232f297a57a5a743894a0e4a801fc3

sha1加密:
 hash = hashlib.sha1()
 hash.update('admin'.encode('utf-8'))
 print(hash.hexdigest())
 d033e22ae348aeb5660fc2140aec35850c4da997



更多介绍可以看这个文章:https://www.cnblogs.com/wang-yc/p/5616663.html

然后生成好的md5值(注意因为i是int类型的需要用str()来进行转换类型)与'/u'和'.txt'拼接写入文件保存

字典内容如下:

然后我们用御剑刷新下网页赶紧跑,并且打开网页,要不然10秒后就要删除

猜你喜欢

转载自blog.csdn.net/nzjdsds/article/details/81610341