PHP代码学习
在php传参过程中,如果服务器运行的Linux环境,可以加入命令的执行,比如参数名是a,命令可以是:a=ls,通过用;,&&,|| 来分割,还可以同时执行多个命令。在Windows环境下dir等价于ls.
cat是读文件命令,如果被过滤可以用tac来读。
通配符:* 和?
如我们需要找寻flag,就可以用 cat f* 来读取所有f开头的文件。
如果读文件命令都被过滤了,那就要构造命令来读取文件:
在shell中,反引号表示执行的意思,那么 ls /bin 就等价于 ls ' echo /bin',这样就可以构造最终版本:'echo dGfjCg==|base64 -d ' 'ench ZmxhZy5waHAK|base64 -d' 也等价于 ls /bin,也就是把ls 和/bin 先用base64编码,然后运行解码命令就可以实现同样的效果,这样就饶过了过滤,其他命令也是如此操作。
变量拼接过滤:
a=c;b=at;c=fl;d=ag;echo $a$b$c$d 那就等价于cat flag
空格过滤:用<>,${IFS},$IFS$9,代替空格,也可以用控制字符代替空格:%09 ,%0b , %0c
本文作者:ugnfc
本文链接:https://www.cnblogs.com/ugnfc/p/18189756
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步