url二次编码绕过

Bugkuctf题库中的一道代码审计题,通过url二次编码绕过过滤得到flag

源代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php

$flag='flag{xxxx}';
if(preg_match("/hackerDJ/",$_GET['id'])){
echo "not allowed";
exit;
}
$id=$_GET['id'];
$id=urldecode($id);
if("hackerDJ" == $id){
echo $flag;
}

?>

看代码第一感觉将hackerDJ进行一次URL编码即可绕过过滤

将一次编码后的值输入

发现自动转化成了hackerDJ,为什么呢,因为我们提交id值给服务器时,服务器会对id值自动url解码,所以要对hackerDJ进行二次URL编码才可以绕过

输入二次编码后的值

成功得到flag值

文章作者: Somnus
文章链接: https://nikoeurus.github.io/2018/07/10/url%E4%BA%8C%E6%AC%A1%E7%BC%96%E7%A0%81%E7%BB%95%E8%BF%87/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Somnus's blog