一、条件竞争原理(结合代码审计)
1、首先进行代码审计,查看源代码。
我们可知,将文件上传至服务器后,不会被立即删除,而是做短暂的停留,中间会有一小部分时间差,这部分时间差是代码进行if判断的时间,这部分时间足够执行一句代码,我们利用这段时间差和一段代码就可以达到上传含有恶意代码的非法文件的目的,这就是"条件竞争"。
2、test.php 中的内容。
执行代码,创造一个名为 shell.php 的文件,shell.php 中写有 <?php phpinfo() ?>。这样我们在test.php 在后台短暂停留的时间内,只要访问它并执行代码,它就会在 upload 中创建 shell.php文件,达到上传非法文件的目的。
二、通关思路
1、上传 test.php 文件,使用 Burpsuite 进行拦截,并将拦截信息发送至 intruder模块进行爆破访问,attack-type选择sniper狙击手模式。 如图操作:
首先添加爆破位置。
其次设置 payloads 值。
准备就绪后不要着急进行 attack。
2、在新标签页中访问test.php。
我们通过 attack不断发送 test.php,也要有相应的措施来访问test.php,因为只有访问test.php,shell.php才会被创建在uoload中。
再次访问test.php,利用Burpsuite进行抓包拦截,发送至 intruder模块爆破,如图:
无限制的访问 test.php。
3、先开始 上传test.php的attack,再进行访问test.php的attack。若访问速度过慢,可以适当提高线程数。
打开upload文件夹,shell.php被成功创建。
在新标签页中访问shell.php,php代码成功执行。
---通关。