ctf.show 萌新模块 web14关, 此关卡是一个代码执行漏洞, 重点在于命令执行函数的利用方式, 源码中过滤比较严格, 尤其是过滤了分号;之后, 虽然可以用?>来代替分号, 但这样一来就只能执行一行代码, 难度较大, 需要注意的是, 源码中的过滤只针对GET请求的参数, 而未对POST请求的参数做限制, 这里推荐曲线救国, GET请求传递一句话木马, 然后在POST请求中传递参数执行系统命令, 从而获取 flag
来到页面后展示了部分源码, 并提示 flag 就在 config.php文件中
源码中通过GET请求获取参数, 并过滤了参数中的 system exec highlight cat ( . ; file php config 等关键字, 这里有几个比较重要的点
1.过滤了括号( , 函数不能用了, 但仍然可以用反引号``来执行系统命令
2.过滤了分号; , 可以使用?>来代替分号, 但这样一来就只能执行一行代码, 增加了解题的难度
3.源码中的过滤只针对GET请求的参数, 并未对POST请求的参数做限制, 可以利用这一点搞事情
首先我们通过GET请求的参数传递一句话木马, $-POST[a] 接收 POST请求传递的参数, 而后反引号将接收的参数当做系统命令执行, 由于反引号
执行完成后并不输出结果, 而是返回一个保存执行结果的字符串类型变量, 所