白袍的小行星

CTF中的一些小技巧

字数统计: 504阅读时长: 1 min
2020/03/10 Share

本文是用来记录一下在CTF中遇到的小技巧,因为比较零碎,不适合单独写一篇文章,就总结在一起了。

Web

  1. 利用PHP字符串解析特性可绕过WAF,如?id=1不接受字符串参数,那么可以使用?%20id=1?+id=1绕过限制,这是因为PHP在接受查询参数时会转换为关联数组,解析过程会删除或使用下划线替换某些字符,如空格、加号等。WAF检测时识别不到?%20id=1这种参数,但是PHP在解析时会删除前面的空格,所以就绕过了检测。

  2. Nginx默认不能使用.htaccess,可以使用.user.ini来构造一个后门。使用前提是上传.user.ini的文件夹下应有一个正常PHP文件,否则不能包含。其原理是让所有PHP文件都包含同一个文件。

  3. 不要太过于依赖sqlmap,尽量自己手动测,可以先用它跑一遍再手动测试。

  4. 有关反序列化的题目,有可能需要绕过_wakeup()方法,这是一个CVE(CVE-2016-7124),即当成员属性数目大于实际数目时即可绕过

  5. URL传递数组可以绕过一些正则相关,如下:

    md5(Array()) = null
    sha1(Array()) = null
    ereg(pattern,Array()) =null
    preg_match(pattern,Array()) = false
    strcmp(Array(), “abc”) =null
    strpos(Array(),“abc”) = null
    strlen(Array()) = null
  6. 反序列化题目相关,注意考虑对象属性权限的问题,即不同权限的属性序列化后是不同的,有些许轻微差别。具体为:

    public $s1; //正常无变化
    protected $2; // %00类名%00属性名
    private $3; // %00*%00属性名
  7. 命令执行场景,有可能flag文件就在本目录下面,却因为过滤flag字符太严而读取不到,这时可以采用下面的方法:

    cat `ls`

    这个方法的原理是先执行了反引号里的ls命令,然后将文件名返回给了cat,可以看到cat读取的是目录下所有文件。

CATALOG
  1. 1. Web