文章作者: LYC
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Rick!
相关推荐

2020-05-07
CTF中的htaccess
服务器中间件为apache,因此想到了传.htaceess来解析php,通常我们用 .htaccess来解析非php后缀文件时用到 AddType application/x-httpd-php .ppp 或者 123<FilesMatch "shell.jpg"> SetHandler application/x-httpd-php</FilesMatch> auto_append_file和auto_prepend_file 相关bypass 如果文件末尾被自动加上一句话,会导致服务器500错误,这时候可以在最后添加#\ 将换行转义成普通字符 如果特殊字符被实体编码, 可以通过特殊编码来绕过 相关比赛 XNUCA2019Qualifier

2020-03-19
PHP-RCE-Bypass
无参数函数执行 https://skysec.top/2019/03/29/PHP-Parametric-Function-RCE/ 大致思路如下: 利用超全局变量进行bypass,进行RCE 进行任意文件读取 什么是无参数函数RCE 传统意义上,如果我们有 1eval($_GET['code']); 即代表我们拥有了一句话木马,可以进行getshell,例如 但是如果有如下限制 1if(';' === preg_replace('/[^\W]+\((?R)?\)/', '', $_GET['code'])) { ...

2020-02-27
PHP参数字符串解析特性
利用PHP的字符串解析特性Bypass 我们知道PHP将查询字符串(在URL或正文中)转换为内部GET或的关联数组_GET或的关联数组GET或的关联数组_POST。例如:/?foo=bar变成Array([foo] => “bar”)。值得注意的是,查询字符串在解析的过程中会将某些字符删除或用下划线代替。例如,/?%20news[id%00=42会转换为Array([news_id] => 42)。如果一个IDS/IPS或WAF中有一条规则是当news_id参数的值是一个非数字的值则拦截,那么我们就可以用以下语句绕过: 1/news.php?%20news[id%00=42"+AND+1=0-- 上述PHP语句的参数%20news[id%00的值将存储到$_GET[“news_id”]中。 PHP需要将所有参数转换为有效的变量名,因此在解析查询字符串时,它会做两件事: 1.删除空白符 2.将某些字符转换为下划线(包括空格) 例如: User input Decoded...

2020-02-28
PHP反序列化及扩展
phar扩展

2020-03-12
Python-Opcode及利用Opcode绕过python沙箱
0x01 OpCode opcode又称为操作码,是将python源代码进行编译之后的结果,python虚拟机无法直接执行human-readable的源代码,因此python编译器第一步先将源代码进行编译,以此得到opcode。例如在执行python程序时一般会先生成一个pyc文件,pyc文件就是编译后的结果,其中含有opcode序列。 如何查看一个函数的OpCode? 12345def a(): if 1 == 2: print("flag{****}")print "Opcode of a():",a.__code__.co_code.encode('hex') 通过此方法我们可以得到a函数的OpCode co_code string of raw compiled bytecode Opcode of a(): 6401006402006b020072140064030047486e000064000053 我们可以通过dis库获得相应的解析结果。 123import...

2020-03-12
Python代码对象code-object与__code__属性
0x01概念 代码对象 code object 是一段可执行的 Python 代码在 CPython 中的内部表示。 可执行的 Python 代码包括: 函数 模块 类 生成器表达式 当你运行一段代码时,它被解析并编译成代码对象,随后被 CPython 虚拟机执行。 代码对象包含一系列直接操作虚拟机内部状态的指令。 这跟你在用 C 语言编程时是类似的,你写出人类可读的文本,然后用编译器转换成二进制形式,二进制代码(C 的机器码或者是 Python 的字节码)被 CPU(对于 C 语言来说)或者 CPython 虚拟机虚拟的 CPU 直接执行。 代码对象除了包含 指令,还提供了虚拟机运行代码所需要的一些 额外信息。 0x02探索 以下的内容是在 Python 3.7 中实验的,而且主要是针对于函数来讲。至于模块和类虽然也是通过代码对象实现的(实际上,.pyc 文件里面就存放着序列化的模块代码对象),但是代码对象的大多数特性主要和函数相关。 关于版本需要注意两点: 在 Python 2 中,函数的代码对象通过 函数.func_code 来访问;而 Python 3...
评论