关于前期的信息收集:
源码泄漏user.php.bak和flag.php (如果有机会尝试读取这个文件)这两个有用的。
查看源码泄漏中对blog的过滤部分,然后通过join页面随便输入一个符合规定的blog完成我们的注册。
然后随便点击几下,发现http://61.147.171.105:61712/view.php?no=1这里进行了传参数。
对其进行sql注入测试。改为 ?no=2-1与原页面一样内容,说明是数字型注入。
然后就是测试哪些被过滤,哪些没被过滤,发现union/**/select没有被过滤。当然我在这里测试了盲注,最终以失败告终(这里就不说了),师傅们可以继续试试。
当然我们要进行判断字段数量,可以通过order by 或者直接union/**/select 1,2,3,4。-------发现2号回显位置。
解法1:由于我们知道flag.php的存在和位置,因此通过注入读取文件即可。
查权限啊,版本信息啊等等。发现我们是root用户,这样以来我们直接就可以读取文件内容了(flag.php)。payload:?no=-1 union/**/select 1,(load_file('/var/www/html/flag.php')),3,4 然后查看源码即可。flag.php的具体位置,我们看题目中有一些报错可以很明显的发现如下图
解法2:
我们通过union/**/select往常注入方式,将里面的表名,字段名,字段具体值全部查询出来,发现了一个4号字段data的数据是序列化之后的
结合源码泄漏中的get函数和getBlogContents函数,然后结合页面中的内容如下图,
可以推断出,该服务器将我们输入的数据进行了序列化存储在数据库当中的data字段中,然后调用了类中的函数将我们的blog内容进行反序列化读取,并且显示在页面当中。因此我们可以通过blog这个输入点进行一些协议的使用例如file协议读取文件。当然他的函数中对blog进行了严格过滤。
因此这里我们通过如下payload进行操作:
?no=-1 union/**/select 1,2,3,'O:8:"UserInfo":1:{s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
然后打开源码即可看到结果。
总结:
1.sql注入 ----绕过过滤,读取文件。
2.反序列化
标签:blog,php,union,----,flag,源码,网鼎杯,fakebook,select From: https://www.cnblogs.com/meng-han/p/16758102.html