zoukankan      html  css  js  c++  java
  • BUUCTF-Web Comment

    dirsearch扫出/.git/目录

    遂用航神写的Githacker脚本   https://github.com/wangyihang/githacker

    出来的源码并不完整,使用git log --reflog查看下记录

     选择第一条修改的记录的commit执行git reset --hard bfbdf218902476c5c6164beedd8d2fcf593ea23b

    这是恢复后的源码

     1 <?php
     2 include "mysql.php";
     3 session_start();
     4 if($_SESSION['login'] != 'yes'){
     5     header("Location: ./login.php");
     6     die();
     7 }
     8 if(isset($_GET['do'])){
     9 switch ($_GET['do'])
    10 {
    11 case 'write':
    12     $category = addslashes($_POST['category']);
    13     $title = addslashes($_POST['title']);
    14     $content = addslashes($_POST['content']);
    15     $sql = "insert into board
    16             set category = '$category',
    17                 title = '$title',
    18                 content = '$content'";
    19     $result = mysql_query($sql);
    20     header("Location: ./index.php");
    21     break;
    22 case 'comment':
    23     $bo_id = addslashes($_POST['bo_id']);
    24     $sql = "select category from board where id='$bo_id'";
    25     $result = mysql_query($sql);
    26     $num = mysql_num_rows($result);
    27     if($num>0){
    28     $category = mysql_fetch_array($result)['category'];
    29     $content = addslashes($_POST['content']);
    30     $sql = "insert into comment
    31             set category = '$category',
    32                 content = '$content',
    33                 bo_id = '$bo_id'";
    34     $result = mysql_query($sql);
    35     }
    36     header("Location: ./comment.php?id=$bo_id");
    37     break;
    38 default:
    39     header("Location: ./index.php");
    40 }
    41 }
    42 else{
    43     header("Location: ./index.php");
    44 }
    45 ?>

    回到题目的登录界面,根据提示对密码后三位进行爆破,最后得到密码:zhangwei666

    进入留言板,审计源码可以发现存在二次注入。三个参数存入board表的时候进行了转义,但之后查询的时候没有转义,造成二次注入。

     sql语句有多行所以使用/**/过滤

    在category

    构造payload

     在留言区提交*/#闭合就能显示结果了

     

     利用load_file()读linux文件

    www用户对bash进行了操作,查看.bash_history

     发现.DS_Store文件

    文件显示不全利用hex()读文件

    发现flag文件

    查看该文件,解码后得flag

  • 相关阅读:
    5.6Java 创建File
    5.6Java File ApI
    Java字符集乱码
    5.17Java文件的拷贝
    5.10Java实操IO流,面向接口编程,面向父类编程
    5.6Java File对象使用递归打印子孙级目录以及文件的名称
    5.10JavaIo流四大抽象类
    5.17Java文件字节流
    5.7通过Maven配置seleeniumjava依赖
    5.6Java多态的介绍
  • 原文地址:https://www.cnblogs.com/remon535/p/12821405.html
Copyright © 2011-2022 走看看