【2024XTCTF】牢牢记住,逝者为大

题目源码是这样的(这里借鉴的是官方的wp,因为我没写出来wwwww)

这里有几个限制
1.注释
2.后面的脏数据
3.传入cmd的长度要在13个字符以内
4.限制命令执行的字符

首先我们先过注释符
只要加一个换行符就能绕过了,%0a
然后是脏数据,加个 ; 和注释 # 即可绕过,注意传注释符的时候要url编一下码就是 ;%23
我们限制已经消耗掉了三个字符,还有9个字符可用,9个字符,常规的方法是很难构造了,但是
我们有个反引号

php里的反引号调用的是方法 shell_exec() ,用于执行系统命令,那么我们就可以直接在里面
执行命令了…吗?
虽然可以执行执行命令比如我们(‘.’是当前目录)

不多不少刚刚好9个字符能把根目录里的东西复制过来,然后直接访问静态资源flag就能直接读取 了,但是非常可惜,会触发”肘死你”或者”what can i say”,就没有办法拯救牢大了 那么我们换一种思路,我们用另一个变量往里面传参,那么就能不受长度的限制自由构造了

我们只要往1传参就能传到里面去,就能自由执行命令了,但是要注意的是,这种方法是无回显 的,无回显也问题不大,用上面的方法把flag复制一下然后直接访问就行,或者直接弹shell

用 ‘’ 来绕过过滤的 cp ,但是我们可以看到通配符是给过滤了的,我们就可以引出第二个技巧, [a-z] ,linux里用中括号可以根据ascii码来匹配里面的字符集, [a-z] 就是匹配任何小写字母a 到z中的一个字符,那么我们就能简单的构造出想要的字符了 payload:


【2024XTCTF】牢牢记住,逝者为大
http://example.com/2024/07/14/牢牢记住,逝者为大/
作者
unjoke
发布于
2024年7月14日
许可协议