首页
社区
课程
招聘
[原创]2019安恒杯Web安全测试大赛练习赛Writeup
发表于: 2020-4-20 21:08 2046

[原创]2019安恒杯Web安全测试大赛练习赛Writeup

2020-4-20 21:08
2046

全是Web题,虽然大都是原题,但是质量不错,刷完后感觉学到了不少知识。

非主流老哥的后门,你进得去么,靶机:1daK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3U0l9`.

这道题的考点在于

访问5e0K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3U0m8Q4x3V1k6#2M7r3I4G2j5h3c8Q4x3V1k6V1j5h3#2S2i4K6u0W2P5s2S2^5P5l9`.`.得到源码

php格式化后f9dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8Y4N6%4N6#2)9J5k6h3A6K6L8$3&6K6i4K6u0W2j5$3&6Q4x3V1k6H3K9s2m8X3L8%4u0E0j5i4c8Q4x3V1j5`.,进行审计

可以看到最开始,如果当参数pass不为空的时候,调用chkpass函数进行判断

chkpass则是检测,user_agent头里有没有,md5加密过的pass参数的值

向下接着看helloowner

helloowner则是进行url切分拼接,和json_decode后执行$d['f']($d['d']);

这里可以把url切分函数,单独分离出来,搭在到本地进行测试

1569595787704

成功绕过。

$d['f']($d['d']);可以用于构造命令执行的一句话木马(这里构造代码执行eval一句话失败,无法被执行)

这里构造payload

最终访问输出如下

构造并发送payload,获得flag

1569165402859

放出来好几天的东西,随便玩玩31bK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6R3`.

默认后台,后台管理员登陆页面弱口令admin/admin

发现dedecms版本为DedeCMS_V57_UTF8_SP2,在网上可以找到它的后台代码执行漏洞,905K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2X3M7X3g2W2j5Y4g2X3i4K6u0W2j5$3!0E0i4K6u0r3N6Y4g2D9M7#2)9J5c8U0p5$3y4o6l9K6y4g2)9J5k6h3S2@1L8h3H3`.

访问49cK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6S2Q4x3V1k6V1k6h3c8W2i4K6u0r3N6s2m8D9i4K6u0W2M7r3S2H3i4K6y4r3j5h3y4@1K9h3!0F1i4K6y4p5N6i4m8D9L8$3q4V1,右击查看源代码获取token值

1569326445947

写入一句话木马

99dK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6S2Q4x3V1k6V1k6h3c8W2i4K6u0r3N6s2m8D9i4K6u0W2M7r3S2H3i4K6y4r3k6X3W2D9k6h3&6S2L8h3g2Q4x3@1c8X3L8r3q4Y4x3q4)9J5k6h3I4A6j5W2)9J5k6i4m8Z5M7q4)9J5y4X3q4E0M7q4)9K6b7X3q4U0N6r3W2G2L8W2)9K6c8s2y4S2N6X3g2@1j5h3N6X3K9h3I4W2i4K6t1$3j5h3#2H3i4K6y4n7j5$3!0F1N6r3g2F1N6q4)9K6c8q4)9J5y4e0y4o6i4K6y4r3M7r3S2H3i4K6t1#2x3U0m8K6P5i4y4@1k6h3#2Q4x3U0S2Q4x3U0c8Q4y4h3k6b7e0#2y4f1i4K6g2n7i4K6t1#2x3U0N6U0L8h3c8Q4x3U0f1J5y4#2)9#2c8q4)9J5z5g2)9K6b7W2)9J5y4e0t1H3i4K6y4r3i4K6t1#2x3@1g2Q4x3U0k6S2L8i4m8Q4x3@1u0@1L8$3E0W2L8W2)9K6c8o6R3&6k6U0t1^5j5K6x3$3k6U0b7@1j5$3b7H3z5o6b7&6j5X3x3J5j5K6b7K6z5o6R3H3j5U0g2V1k6o6p5^5

1569330050134

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

1569330251722

getflag

1569330321021

你以为还是简单的新闻搜索网站么 375K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3K6l9`.

这里过滤了unionselect使用mysql内联注释进行绕过

1569594314883

常规操作,试一试 009K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6W2Q4x3V1j5`.

这里存在本地文件包含,且php拼接后缀

发现其web根目录下存在flag.php,直接php伪协议读取

1569594518980

base64解码即可得到flag

1569594566506

简单的新闻搜索网站 dfeK9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0l9`.

简单的post注入

1569594128673

ctf打多了,现在咱们把hackerone的漏洞复现一下吧。小曾师傅花了好几天写了一套模拟hackerone上的漏洞的程序,恩阿。很有趣哦~这可是企业实实在在遇到的问题哦!不是脑洞大开题 请各位亲们谨慎思考。靶机:0d6K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3U0x3`.

详细步骤

大约在15亿年前,生活在地球上的恐龙中有一种很奇怪的恐龙,他们有一种奇怪的特性,那就是当在捕杀猎物的时候,如果猎物发出惊讶的表情的时候,他们也会发出惊讶的表情来告诉猎物“你们快要死了”,然而这种特性并没什么用处。。。因为我编不下去了。。以上这个故事是我瞎编的。。。靶机:947K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3U0t1`.

这是一道代码审计题

$_SERVER['QUERY_STRING']会获取到所有的文件后面传递的所有参数。

下面的实验可以直观的展现出它的作用

1569593877564

php有以下特性

利用以上特性进行绕过

1569593465305

瓶子里的酒啊,越久越好,靶机:0e8K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0M7`.

作为一个不会代码审计的弱鸡,看了两个小时代码,猜测可能在上传解压后判断文件名不合法然后删除文件的地方存在条件竞争

结果发现每次上传的时候都会有几秒的sleep时间,并不能成功竞争,并且如果爆破的话,会导致web无法正常访问。

最后发现是考点是apache2.2.15的解析漏洞,跟代码怎么写没有关系。。。

在apache2.2.15版本的情况下,test.php.png.jpg.gif等均会被解析成php文件来执行,高版本的apach服务器不存在此漏洞。

尝试上传压缩包中名字为test.php.png的一句话木马时无法上传成功,判断可能黑名单检测php,这里我们上传文件名test.PHP.png为的一句话木马。

1569592989615

上传成功,得到flag

1569593070099

要学习新的内容才能做出来 e49K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6M7`.

访问9b7K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6N6Q4x3V1k6J5L8$3u0G2N6s2y4Q4x3X3g2@1P5s2b7`.

从题目名称和robots.txt文件可以猜测,该题目考察的是基于时间的盲注

发现此处存在黑名单

1569590980040

经过测试发现其检测sleepbenchmark函数,这里我们可以利用等价函数get_lock()来进行延时注入

参考资料b31K9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6%4N6%4N6Q4x3X3g2U0k6i4y4S2k6X3g2Q4x3X3g2U0L8$3#2Q4x3V1j5K6z5e0V1K6i4K6u0W2K9s2c8E0L8l9`.`.

可以注入出数据库名

1569591287954

但是向下不得不使用select语句进行注入,这道题同样检测select

此时可以不使用传统的数据库名=>表名=>字段名=>数据的方式来进行注入,可以利用mysql 同库不需要select查表,直接可以查询字段名的特性来进行构造sql注入语句

此时要注意使用get_lock函数时需要开两个session测试,第二次测试才会有正常的延时。

根据语句写出盲注脚本

运行得到flag

1569593101648

md5 crash 000K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6j5`.

右击查看源代码

发现进行了类型转换,并且使强类型比较,可以使用md5碰撞生成器,生成两个内容不同,但是md5相同的问题件,来进行攻击

使用fastcoll工具来进行md5碰撞攻击

用python来进行读取然后进行url编码

1569590806621

简单的md5 385K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3o6b7`.

访问后右击查看源代码

直接传参

1569589959820

不久前才开发的系统,功能也还不完善,代码也还有待改进 5e2K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0c8Q4x3V1j5`.

访问925K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0c8Q4x3V1k6%4k6h3u0Q4x3V1k6J5L8$3u0G2N6s2y4Q4x3X3g2@1P5s2b7`.发现

访问aa4K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0c8Q4x3V1k6%4k6h3u0Q4x3V1k6A6L8X3c8W2P5q4)9J5k6i4m8Z5M7q4)9K6c8Y4u0Q4x3@1c8K6K9i4c8W2i4K6u0r3L8r3!0Y4K9h3&6#2M7$3g2J5i4K6g2X3x3b7`.`.右击查看源代码

给出了github的地址,通过它找到了作者留在github上的hint

获得了一个测试账号test/cib_sec和cookie生成的php代码

我们用测试账号登陆

发现权限是游客,upload功能无法使用

1569586043107

我们来分析test用户的cookie,对其进行urldecode和反序列化操作

根据github上的生成信息来伪造管理员的cookie

获得cookie

通过burpsuite替换cookie访问upload页面

1569586575730

成功访问upload页面

1569586616551

我们利用上传点来上传我们的webshell

上传点存在白名单验证,从返回包可以得知其是apache2.2.15,apache2.2.15版本具有文件解析漏洞,可以把test.php.png当作php文件来解析执行,apache高版本不存在此漏洞,这里我们可以使用apache2.2.15的解析漏洞来绕过白名单限制。

1569586798936

成功上传,访问得到flag

1569586832636

玩个蛇皮 e46K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0p5`.

这个题是一个用js实现的贪吃蛇游戏

1569586981298

玩一局就可以看到它的长度显示了出来,右击查看源代码

可以看到这里加载了game.js文件,我们访问988K9s2c8@1M7q4)9K6b7g2)9J5c8W2)9J5c8U0p5I4y4q4)9J5k6e0f1#2i4K6u0W2x3K6k6Q4x3X3f1$3z5g2)9K6b7e0R3H3x3e0q4Q4x3V1k6B7M7#2)9J5c8X3N6S2L8h3g2Q4x3X3g2B7M7H3`.`.

可以看到当长度>2500时执行这段aaencode代码,直接利用firebug进行调试, 执行加密结果,返回为一个假的flag,执行代码后,DOM树, 发现window[‘flag’]选项,发现flag

1569589283882

 
 
 
 
 

[培训]科锐逆向工程师培训第53期2025年7月8日开班!

最后于 2020-4-21 14:58 被flag0编辑 ,原因: 修复paload错别字
收藏
免费 0
支持
分享
最新回复 (5)
雪    币: 1931
活跃值: (472)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
flag0师傅博客也发了一份
2020-4-20 21:17
0
雪    币:
活跃值: (94)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
paload错别字哦
2020-4-21 10:09
0
雪    币: 58782
活跃值: (21905)
能力值: (RANK:350 )
在线值:
发帖
回帖
粉丝
4
KCTF 第八题 牛刀小试 也是一道WEB题,记得到时来参与一下:dbcK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3k6Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8X3N6S2L8h3g2Q4x3X3c8K6k6h3q4K6L8$3&6Q4y4h3k6X3K9h3N6Z5N6q4)9J5k6o6p5@1x3W2)9J5k6h3S2@1L8b7`.`.
2020-4-21 13:49
0
雪    币: 338
活跃值: (2102)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
5
古朴 paload错别字哦
已修改,感谢师傅帮忙纠正。
2020-4-21 14:59
0
雪    币: 338
活跃值: (2102)
能力值: ( LV7,RANK:110 )
在线值:
发帖
回帖
粉丝
6
kanxue KCTF 第八题 牛刀小试 也是一道WEB题,记得到时来参与一下:e9fK9s2c8@1M7s2y4Q4x3@1q4Q4x3V1k6Q4x3V1k6U0N6r3k6Q4x3X3g2H3k6h3c8A6P5g2)9J5k6h3y4G2L8g2)9J5c8X3N6S2L8h3g2Q4x3X3c8K6k6h3q4K6L8$3&6Q4y4h3k6X3K9h3N6Z5N6q4)9J5k6o6p5@1x3W2)9J5k6h3S2@1L8b7`.`.
好的,段老师,等开题了,我也去参加下。
2020-4-21 15:01
0
游客
登录 | 注册 方可回帖
返回