目录

简介

举例

前期准备

BP-Intruder攻击

 Python脚本攻击

参考


简介

条件竞争,发生在多个线程或进程在读写一个共享数据时,结果依赖于他们执行的相对时间的情形。

举例

前期准备

在phpStudy的WWW目录下,写两个文件。

网络安全-条件竞争(《CTF特训营》第7章复现)_条件竞争标题

condition_race.php内容:

<?php
	$cnt=file_get_contents("count.txt");
	//count.txt的初始内容为0
	$cnt+=1;
	echo "This site was visited $cnt times.";
	file_put_contents("count.txt",$cnt);
?>

分析: 代码读取了一个共享数据,count.txt里面的值。如果有大量的访问产生,导致几乎同一时刻有多个file_get_contents函数对文件进行读取。例如,有两个线程A与B都在运行fiile_get_contents函数,A、B都是读出来了10,$cnt都是10,A将$cnt+1后存入文件,文件内容为11,B同样,结果,文件中的内容为11,但其实应该为12。

count.txt内容:

0

打开phpStudy

BP-Intruder攻击

浏览器设置好代理,进行拦截。

网络安全-条件竞争(《CTF特训营》第7章复现)_python_02拦截

右键,发送到Intruder模块。设置无payloads,进行1000次请求访问。

网络安全-条件竞争(《CTF特训营》第7章复现)_python_03Payloads设置

Options配置线程数为80。

网络安全-条件竞争(《CTF特训营》第7章复现)_网络安全_04配置Options

回到Payloads界面,点击Start attack,等待完成,刷新页面。

网络安全-条件竞争(《CTF特训营》第7章复现)_网络安全_05攻击完成

 当然,你也可以不刷新页面,向书中一样,拉动Results,找到序号1000的Response,查看结果。刷新页面会多一次,当然无所谓,应该是比1000少几百的。

 Python脚本攻击

发起200次页面请求,最后结果为32。

"""
--coding:utf-8--
@File: condition_race.py
@Author:frank yu
@DateTime: 2020.12.18 15:50
@Contact: frankyu112058@gmail.com
@Description:
"""
from multiprocessing import Process

import requests

url = "http://127.0.0.1/condition_race.php"


def request(times):
    while times:
        print(requests.get(url).content)
        times -= 1


def main():
    nloop = 100
    for i in range(nloop):
        p = Process(target=request, args=(2,))
        p.start()


if __name__ == '__main__':
    main()
网络安全-条件竞争(《CTF特训营》第7章复现)_python_06脚本攻击结果

练习:CTF-【NSCTF 2015】WEB11 条件竞争

参考

《CTF特训营》

更多内容查看:网络安全-自学笔记

喜欢本文的请动动小手点个赞,收藏一下,有问题请下方评论,转载请注明出处,并附有原文链接,谢谢!如有侵权,请及时联系。如果您感觉有所收获,自愿打赏,可选择支付宝18833895206(小于),您的支持是我不断更新的动力。