CTF Web安全

首届360杯网络安全职业技能大赛 Web(立誓要成为admin) writeup

Posted on 2020-01-02,2 min read

环境说明:
由于比赛结束。官方也没给源代码和靶机。就没有漏洞环境了

writeup
大概,就是有一个登陆界面,注册界面,可以注册用户
注册admin空格,无果,注册test查看cookie也没有东西。只存在一个session
但是,注册界面存在sql盲注,sql注入跑一下,发现能注入,拿到管理员密码
图片搬运工上线~~~~~~~图片来源360网络安全大学

md5解不开。就很难受
sql注入,在权限够大的时候,能够读取文件和导出文件,这里我们试着读取下passwd

欸,很舒服,读取下index.php源码

没有权限,试试导出一句话

也不行
扫描目录。发现test.php

预测后端代码var_dump($_SESSION);
回想到它是通过session来判断是否用户。而session常保存在/tmp/sess_随机字符串
而这个随机字符串是可以从浏览器看到的
那么我们是否可以sqlmap导出一个sess_随机字符串,内容是我们构造的admin

比如,我这的PHPSESSID是ot6dubihmns0evn1tsoej2hbe6,那么它的session文件就为/tmp/sess_ot6dubihmns0evn1tsoej2hbe6,只要这个文件存在,你带着sessionid去访问页面,它就判定你是ID对应的用户

开始构造:
user|s:4:"test";
#test用户
user|s:5:"admin";
#构造的admin用户
1' union select 'username|s:5:"admin";' into outfile '/tmp/sess_ot6dubihmns0evn1tsoej2hbe5'
#创建admin用户的session文件
修改浏览器的sessionID,然后访问index.php,拿到flag

下一篇: Mysql数据库学习→