osql

零过滤sql注入,也没有套娃 只不过数据库是oracl 其中简介是不要作弊意思 就是不要使用sqlmap去跑 这里就算你跑出来也是没有flag的 首先想教的就是拿到sql注入首先需要看看数据库类型 接着要去查看数据库版本 其次在id里有提示flag表里的内容是提示 所以不要说误导你 最后给的提示里面已经有答案了

image-20221108172150896

从题目可以看到有sql注入 并且题目名字是osql 所以 数据库可以猜测是oracle

image-20221106211141486

这里进行尝试发现确实是oracle数据库

image-20221106211259315

看字段数 这里通过order by 可以发现 是3个字段

image-20221106211345508

image-20221106211358228

这里从username 的名字也可以发现这里表的结构是 sqllibs的数据库表

image-20221106211600629

其实这里就是一个提示信息

这里尝试查看回显位 发现报错信息from关键字没有发现

image-20221106211654114

直接查看sql官方语法

image-20221106213454655

这里可以发现存在一个dual表, 当然这里如果你熟悉 sqllibs 的话会发现有一张users 的表 还有这里也可以知道有一张flag表,三个都可以去使用

image-20221106213638493

image-20221106212716796

image-20221106212732897

尝试第一个dual 的时候发现存在数据类型不相同的问题

image-20221106213828660

尝试flag发现表不存在

image-20221106213928657

image-20221106214024520

image-20221106214034987

image-20221106214056050

这里直接拿过来尝试 发现回显位 但是使用flag表为啥不存在呢 原因就是这里的数据类型不同

image-20221106214126582

当flag表名被”” 包裹之后便正常访问

image-20221106214212605

这里当去直接查字段的时候 发现参数未定义 这里还是说明字段类型没有正确匹配上

image-20221106214328870

image-20221106214301757

这里就发现了需要去查询 数据库的版本信息,这里的主要目的就是想 拿到sql注入首先需要查询的是数据库的类型 接着就是去查询数据库的版本 如果你从第一步就先去查数据库版本这里的flag表中的值其实无所谓

image-20221106214551948

版本就很简单了 只要你查到了版本就返回flag

image-20221106214621824

题目描述说了不许作弊的意思就是不许使用sqlmap 的这里如果使用sqlmap注入出来的数据也是没有用的 不会返回flag

image-20221106214734751

数据库结构

image-20221106214938071

主要代码

import os

from traceback import format_exc

import cx_Oracle
from cx_Oracle import DatabaseError
from django.shortcuts import render
# Create your views here.
def index(request):
FLAG = os.getenv("GZCTF_FLAG")
dsn = """(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = 43.142.39.81)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = ctf)
)
)"""

connection = cx_Oracle.connect(user="** *", password="1qaSX", dsn=dsn,
encoding="UTF-8")


id = request.GET.get("id","1")

sql = """select * from "users" where "id"='""" +id +"'"

data={"id":[],"username":[],"passwd":[],"flag":"?id=1","error":"没有错误哦"}
if "sqlmap" in str(request.headers):
return render(request, "index.html", data)
with connection.cursor() as cursor:
try:
cursor.execute(sql)
while True:
row = cursor.fetchone()
if row is None:
break
data["id"].append(row[0])
data["username"].append(row[1])
data["passwd"].append(row[2])
except Exception:
data["id"].append("id 一定按顺序吗?")
data["username"].append("应该会是什么用户名呢?")
data["passwd"].append("猜猜看咯!")
data["error"] = format_exc()
if "11.2.0.4.0" in str(data):
data["flag"] = FLAG
connection.close()

return render(request,"index.html",data)

Intranet!

这是一道内网的题目 主要是想介绍以下内网渗透的流程

网络环境如下

image-20221108173030748

首先web服务器对外提供了一个web服务 在内网中还有一台 pc主机 这里的192.168 是内网网段 不知道的可以去学习下网络基础. 在本题目中web服务器 已经被你拿下了 有一个shell.php 的shell是可以执行网站命令的. 接着在 网站的根目录下找到了一个密码本.这个密码本存放着该站点的测试用户信息.其中ip port username password 是ssh连接信息 这里可能会卡住 .接下来需要去使用ssh连接上主机获得用户权限进入内网.到达内网之后需要去对内网的服务进行探测 也就是扫描内网ip与端口信息,其中选择了445端口作为第二台主机的ssh端口去连接(原因后面会写).接着在pc的home目录下就可看到flag.接下来按照内网渗透流程就应该是提权与持久化了.这里的彩蛋就是root用户提权.这里的提权方法就是简单的 su root 密码是root 也就是弱口令.

页面什么都没有,直接扫目录

image-20221106215141456

image-20221106215216699

连接

image-20221106215229168

找到password.txt

image-20221106215402260

image-20221106215453232

发现是密码本 这里可以发现是ssh的ip 端口密码信息

image-20221106215822107

image-20221106215841093

使用cmd的ssh工具进行连接 使用kali也是可以的 使用ssh工具也是可以的

image-20221106215605213

image-20221106215948351

ifconfig
查看ip信息 发现内网网段

image-20221106220008272

这里还有一个 ip可以连接 但是需要端口信息

image-20221106215453232

这里搜索内网常见端口信息 第一个445

image-20221106220238440

这里为什么是445端口呢 原因 这是进入内网必须要扫的一个漏洞就是永恒之蓝 因此这里选择了445 端口

image-20221106220419341

直接尝试 连接 成功

image-20221106220319751

使用 fscan 去扫描内网端口

image-20221106220816801

上传到服务器上去

image-20221106220852163

启动一个http服务

image-20221106220933807

wget 下载文件

image-20221106221115877

扫描端口信息 发现445 open

image-20221106221238953

或者一个一个常见端口尝试 445就可以连接成功

这里还有一个彩蛋 就是提权操作 这里的root用户是一个弱口令 root 直接提权之后就可以查看到 /root目录下的彩蛋

image-20221106220519720

kali

image-20221107091412824

ssh 连接工具 windterm

image-20221107091447652

image-20221107091503285

image-20221107091525583

image-20221107091546370

image-20221107091602628