CTF-安全杂项(一)

声明:以下CTF题均来自网上收集,在这里主要是给新手们涨涨见识,仅供参考而已。需要题目数据包的请私信或在下方留言。

     1.MD5之守株待兔,你需要找到和系统锁匹配的钥匙(来源:实验吧)

1.关卡描述


 

2.解题步骤


分析:

点开链接可以发现有两串字符,而且系统的秘钥是一直在变化的

题目中已经给了MD5加密,那么用MD5解密发现您的秘钥是[空密码]

系统秘钥一直在变化,猜可能是时间戳

思路:每刷新一次,系统key都会变化一次,解密md5后可以发现,系统key是一个类似“1530346200”的数字,且每刷新一次,key值都加1(如果有其他人提交,可能返回结果不止加1),写个脚本来守株待兔。

注意:脚本中的key值,应根据当前页面返回的系统key md5解密后的值,往后顺延一定的位数

如当前页面的系统key为1530346100,可以设置脚本中的key为1530346200

在线时间

http://tools.sharejs.com/unixtime.html

# -*- coding: utf8 -*-
import requests,time

url='http://ctf5.shiyanbar.com/misc/keys/keys.php?key=1547450636'

s=requests.session()
while(1):
    res=s.get(url)
    print res.content
    if res.content.find('false')==-1:
        break
    time.sleep(1) 

CTF{c04ffec18156c696}

                            2.你没有见过的加密!(来源:实验吧)

1.关卡描述


 

2.解题步骤


分析:

解密代码:

<?php
$cryptedstr = "MDEzMjE5MDAyMTg0MTUzMjQwMTQ0MDc3MjUzMDk2MTc1MTUzMTE4MTg4MDEwMDA2MTg4MDA0MjM4MDI1MTA3MTU4MTc5MTM4";
$cryptedstr = base64_decode($cryptedstr);
 
$len = strlen($cryptedstr);
$str = "";
srand(3284724);
for($i=0;$i<$len/3;$i++){
	$temp = substr($cryptedstr, 0, 3);
	$cryptedstr = substr($cryptedstr, 3);
	$n = intval($temp)^rand(0, 255);
	$str .= chr($n);
}
 
echo "$str";
 
?>

在线程序解释器

flag{you_are_successful}


代码部分解析:

1.rand()函数

作用:返回随机整数

用法:rand(min,max)  min和max规定随机数产生的范围,可以省略不写,不写时rand() 返回 0 到 RAND_MAX 之间的伪随机整数。

 

2.srand()函数

作用:播下随机数发生器种子

用法:srand(seed)

说明:只使用rand()函数时,并不能产生的随机数随机性很差,用srand()后,随机性大大增加。

注:自 PHP 4.2.0 起,不再需要用 srand() 或 mt_srand() 函数给随机数发生器播种,现在已自动完成。

有时在代码中仍然会遇到srand()。

 

真正的随机数是没有的,rand也是通过一定的数学计bai算模拟的,而如果没有初始化,每次产生的随机数都会重复,所以要加上 srand,php 4.2以后已经可以不用加了,但测试发现,加上万无一失

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值