TGCTF2025web部分wp(有后续)

各位师傅好,前两天也是打了TGCTF,被各位大佬炸麻了,今天赶紧来复现一下。

开头一句诗:春风若有怜花意可否许我再少年!

————————————————————————————————
题解:

  1. AAA偷渡阴平,考点:WAF无参rce。我们先看题:题目给了对数字的过滤以及特殊字符的正则,但唯独没有对2过滤。
    我们一个个试一下好吧,看一下具体过滤了哪些东西:出数字2以外的所有数字和~、`、@、#、$、%、^、&、*、(、)、-、=、+、{、[、]、}、:、'、"、,、<、.、>、/、?、\,这里有一个小tips,正则给的是中文下的括号,同时也没有字母的绕过,我们可以用无参rce做。
    无参rce,大概率是非预期解,因为没有过滤掉2肯定是有原因的,我们可以在复仇看到2的作用。直接url + ?tgctf2025=eval(end(current(get_defined_vars())));&b=system('ls /');
    这边get_defined_vars()的意义是返回当前作用域中所有已经定义变量的数组。

payload: url + ?tgctf2025=eval(end(current(get_defined_vars())));&b=system('cat /flag');


出来哩!!!!
2. AAA偷渡阴平(复仇),考点:session_id+hex2bin(这里就体现了2没有被正则的重要性了)
这里具体参照:https://blog.csdn.net/2301_76690905/article/details/133808536

然后我们打开hackbar看看cookie有没有,打开后发现没有,根据那篇文章发现不能使用eval,但是可以使用system,然后发现也是不可以的,因此我是自己搭了一个环境测试了一下:发现可以这样做,payload:
url + ?tgctf2025=session_start();system(hex2bin(session_id()));(hex2bin:将16进制转换为字符串)
然后打开cookie : PHPSESSION=636174202f666c6167(cat /flag的十六进制形式)
小tips:这不能一起填,否则会获取不到,我们应该先获取当前的session_id,然后再把我们要执行的命令输入。
又拿到flag哩!

posted @ 2025-04-15 14:42  endowment  阅读(176)  评论(0)    收藏  举报