[网鼎杯 2018]Fakebook1

 join一个用户后,点进去发现是这样的

[网鼎杯 2018]Fakebook1_第1张图片

查看这个页面的源代码,发现一个base64编码后的字串

[网鼎杯 2018]Fakebook1_第2张图片

decode之后就是我们join新用户时填入的blog网址 

[网鼎杯 2018]Fakebook1_第3张图片

 那我们是不是可以通过填入存储flag的地址,从而回显出来呢?当然,先按照常规sqli步骤走

扫一下目录,但是这里比较奇怪,没有内容的会跳回默认页面

假装我们已经扫出来user.php.bak和flag.php

[网鼎杯 2018]Fakebook1_第4张图片

 

 user.php.bak的内容[网鼎杯 2018]Fakebook1_第5张图片

回到view.php,查出来有四列,然后还发现过滤了union select中间的空格,用/**/替代空格绕过

[网鼎杯 2018]Fakebook1_第6张图片 

这里2回显在username的位置上,同时也有报错显示绝对地址 

[网鼎杯 2018]Fakebook1_第7张图片 

[网鼎杯 2018]Fakebook1_第8张图片 

这里爆出来的也都是我们join的序列化数据,显然flag不在这里,

[网鼎杯 2018]Fakebook1_第9张图片 

回到刚刚提到的绝对路径这一步

data存在4这里,并且上面一张图可以看出data是序列化的字符串,我们把blog改成file:///var/www/htmlflag.php

no=0 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:3:"123";s:3:"age";i:123;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'
 

[网鼎杯 2018]Fakebook1_第10张图片 

[网鼎杯 2018]Fakebook1_第11张图片 

成功读取了flag.php的源码

[网鼎杯 2018]Fakebook1_第12张图片 

另外还有一个方法load_file()可以直接读取文件

[网鼎杯 2018]Fakebook1_第13张图片 

[网鼎杯 2018]Fakebook1_第14张图片 

你可能感兴趣的:(web,ctf)