ctfshow-萌新-web14( 曲线救国-POST请求绕过获取网站敏感信息)

举报
士别三日wyx 发表于 2021/12/23 00:49:17 2021/12/23
【摘要】 ctf.show 萌新模块 web14关, 此关卡是一个代码执行漏洞, 重点在于命令执行函数的利用方式, 源码中过滤比较严格, 尤其是过滤了分号;之后, 虽然可以用?>来代替分号, 但这样一来就只能执行一行代码, 难度较大, 需要注意的是, 源码中的过滤只针对GET请求的参数, 而未对POST请求的参数做限制, 这...

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请求传递的参数, 而后反引号``将接收的参数当做系统命令执行, 由于反引号``执行完成后并不输出结果, 而是返回一个保存执行结果的字符串类型变量, 所以需要使用 echo 来输出这个变量, 从而输出执行结果

?c=echo `$_POST[a]`?>
 

而后使用代理工具( Burp Suite)抓包, 在POST请求中传递需要执行的系统命令, 这里需要注意两个地方( 如果使用的是其他工具可以忽略)

1.拦截的请求是GET请求, 需要改成POST请求才能在请求体中传递参数

2.由于手动将GET请求改成了POST请求, 需要再手动添加 Content-Type: application/x-www-form-urlencoded , 否则将无法正常发送POST请求的参数

 请求头

Content-Type: application/x-www-form-urlencoded
 

 POST请求参数

a=cat config.php
 

 页面空显示, 但也没有报错, 不用担心, 这很正常

右键查看网页源码, 即可获取 flag 

 

文章来源: blog.csdn.net,作者:士别三日wyx,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/wangyuxiang946/article/details/120252481

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。