漏洞复现-Apache SSI远程命令执行
SSI远程命令执行当目标服务器开启了SSI与CGI支持,我们就可以上传shtml,利用 <!--#exec cmd=”id” --> 语法执行命令。
shtml 不是 html 而是一种服务器 API,shtml 是服务器动态产生的 htm使用SSI(Server Side Include)的html文件扩展名,SSI(Server Side Include),通常称为”服务器端嵌入”或者叫”服务器端包含”,是一种类似于ASP的基于服务器的网页制作技术。默认扩展名是 .stm、.shtm 和 .shtml。
上传之后,点击即可
可以尝试上传 shtml 文件来达到getshell的目的
CVE-2017-15715 换行符截断Apache HTTPD是一款HTTP服务器,它可以通过mod_php来运行PHP网页。其2.4.0~2.4.29版本中存在一个解析漏洞,在解析PHP时,1.php\x0A将被按照PHP后缀进行解析,导致绕过一些服务器的安全策略。
发送文件上传数据包
需要添加一个 \x0a
上传后解析成功
ps:也不知道如何构造文件上传数据包,我是写了 ...
每天一道leetcode-数组题
整数转罗马数字题目虽然不难,但是也整了好久,后来才明白转成罗马数字就是不断地做除法和模
但是我这里遇到了一个问题,python中的字典本来是无序的,所以我就拆成了两个list来存放
class Solution(object): def intToRoman(self, num): """ :type num: int :rtype: str """ result = '' nums = [1000,900,500,400,100,90,50,40,10,9,5,4,1] chars = ['M','CM','D','CD','C','XC','L','XL','X','IX','V','IV','I'] for i in nums: x = num // i num = num % i result += x*chars[nums.index(i)] return result
这样当然 ...
每天一个Linux命令-dig
基本选项:@<服务器地址>:指定进行域名解析的域名服务器;-b<ip地址>:当主机具有多个IP地址,指定使用本机的哪个IP地址向域名服务器发送域名查询请求;-f<文件名称>:指定dig以批处理的方式运行,指定的文件中保存着需要批处理查询的DNS任务信息;-P:指定域名服务器所使用端口号;-t<类型>:指定要查询的DNS数据类型;-x<IP地址>:执行逆向域名查询;-4:使用IPv4;-6:使用IPv6;-h:显示指令帮助信息。
比如我要用Google的DNS
dig prontosil.club @8.8.8.8
查询解析记录dig prontosil.club -t CNAME
得到结果:
;; QUESTION SECTION:;prontosil.club. IN CNAME;; ANSWER SECTION:prontosil.club. 600 IN CNAME 2zeqwj.coding-pages.com.;; Quer ...
域名解析记录
博客域名解析如下是我在腾讯云后台的设置
按照腾讯云的解释
可以查询到 www.prontosil.club 的解析记录为
经过多次的折腾发现,@ 解析记录只能有一个默认,只能有一个记录类型,比如我这里是A记录设置为 @,那么CNAME记录就不能设置为 @
同时我终于发现www 和裸域的区别了,之前还一直以为是同一个
裸域不加 www 的裸域名好处主要是域名更加简短、容易记忆。坏处就多了,讲几个主要的技术原因:裸域名只能绑定 DNS 的 A 记录,不能绑定 CNAME 记录。也就是说你不能把裸域设定为另外域名的别名。很多时候这对管理不是很方便,特别是使用第三方托管服务的时候。如果第三方迁移服务器导致 IP 地址变更,你必须自己去更改 DNS 的 A 记录。
TXT记录
这种可以用来出题
JavaScript原型链污染
JavaScript原型链污染如何继承比如,现在有一个”动物”对象的构造函数。
function Animal(){this.species = "动物";}
还有一个”猫”对象的构造函数。
function Cat(name,color){ this.name = name; this.color = color; }
要让Cat这个类去继承Animal类,如果在其他的语言中,一般就是extented即可
但是在JavaScript中,
Cat.prototype = new Animal();Cat.prototype.constructor = Cat;var cat1 = new Cat("大毛","黄色");alert(cat1.species); // 动物
第一行我们直接修改了Cat的prototype属性,让其指向Animal
这一点不难理解,之后所有Cat实例化的对象cat,它的__proto__就会指向Animal(因为Cat.prototype==cat.__proto__)
但是第二行比较疑惑,Cat. ...
java审计笔记
反射相关概念正常执行一条命令
Runtime.getRuntime().exec("calc");
如果通过反射来执行:
Class clazz = Class.forName("java.lang.Runtime");clazz.getMethod("exec", String.class).invoke(clazz.getMethod("getRuntime").invoke(null), "calc");
Runtime 的构造方法是私有的,遵循单例模式,所以无法直接调用,但是可以通过调用静态方法 getRuntime 来获得一个 Runtime 对象,这个方法是静态的,并不需要传递类的实例进去(不然就陷入了死循环),而调用之后返回的结果是一个 Runtime 对象,作为 exec 方法的第一个参数,这是因为 exec 方法不是静态方法
我们正常执行方法是 [1].method([2], [3], [4]...) ,其实在反射里就是 method.invoke([1], [2], [3], [4]...)
当然如果分解开来比较好理解一点:
Class clazz = Cla ...
XXE复习
XXE常用payload分析好像大家都用这个测试代码
<?phplibxml_disable_entity_loader(false);$xmlfile = file_get_contents("php://input");$dom = new DOMDocument();$dom->loadXML($xmlfile, LIBXML_NOENT | LIBXML_DTDLOAD);$creds = simplexml_import_dom($dom);var_dump($creds);
使用XML发送数据:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE root[<!ENTITY a SYSTEM "http://localhost:8887/aaaaa">]><root>&a;</root>
但是我在尝试参数实体的时候似乎不能外带数据
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE ro ...