第二次作业

server/2024/10/19 23:35:58/

一、Mysql UTF-8编码

搭建环境

创建一个.php文件

<?php

$mysqli = new mysqli("localhost", "root", "123456", "security");

/* check connection */

if ($mysqli->connect_errno) {

    printf("Connect failed: %s\n", $mysqli->connect_error);

    exit();

}

$mysqli->query("set names utf8");

$username = addslashes($_GET['username']);


 

if ($username === 'admin') {

    die('Permission denied!');

}

/* Select queries return a resultset */

$sql = "SELECT * FROM `table1` WHERE username='{$username}'";

if ($result = $mysqli->query( $sql )) {

    printf("Select returned %d rows.\n", $result->num_rows);

    while ($row = $result->fetch_array(MYSQLI_ASSOC))

    {

        var_dump($row);

    }

    /* free result set */

    $result->close();

} else {

    var_dump($mysqli->error);

}

$mysqli->close();

 在数据库中创建一张表

 

表中插入数据

 

这样环境就搭好了, 然后访问网页

当username=admin时就会被拒绝,但是当username≠admin时,又查询不了数据库

 

 所以要想查询到数据库,就必须让username=admin,但是username=admin又会被拒绝,所以我们需要传递一个admin并带有字符的,让程序认为他不是admin,但是又可以让MySQL把那个字符放弃删除。

 经过尝试发现%c2可以绕过,但是为什么呢?

这是因为%c2是一个特殊字符,MySQL在转换字符集的过程为,utf-8---->utf-8--->latin 1,但是在这个案例中实际上是utf-8---->utf-8--->utf-8,而latin 1只支持英文,因此在转换的过程中就抛出了错误,导致查出了username=admin的结果。

二、无字母数字webshell

首先在Ubuntu下的/usr/local/nginx/html中,创建一个web.php

访问网页

然后下一个上传文件的html文件

 最后随便创建一个txt文件,编写内容

现在,使用burp suite进行抓包

 

发送到repeater下边

 

然后将红框内的数据放到web.php下

 

 这里改为POST

然后就可以写get传参

但是 由于这里是get传参,要遵循url编码,所以要将空格,问号, @,分号进行转换

 提交

 在Linux下的/tmp中可以看到生成了一个临时文件

 为进一步验证,可以在web.php下添加sleep,然后再次提交

 然后再去查看这个临时文件是否存在

 


http://www.ppmy.cn/server/99980.html

相关文章

.NET编程:C#中SerialPort串口通讯的实战之旅

概述 在现代软件开发中&#xff0c;尽管许多通信协议已经转向了更高级的解决方案&#xff0c;但串口通讯依然在某些特定领域扮演着不可或缺的角色。无论是工业自动化、嵌入式系统开发&#xff0c;还是某些特定的硬件交互&#xff0c;SerialPort类提供了一个简单而强大的接口来实…

【playwright篇】CSS 选择器 详细用法

在 Playwright 中&#xff0c;CSS 选择器是非常重要的&#xff0c;因为它们用于定位页面上的元素。CSS 选择器允许您通过 HTML 元素的属性、类名、ID 等来定位元素。以下是 CSS 选择器的一些基本用法和示例。 CSS 选择器基础 元素选择器: 直接使用元素名称来选择元素。await p…

gin获得get和post请求参数,获得请求头信息

获得头信息 router.GET("/", func(c *gin.Context) {name : c.Query("id")fmt.Println(name)Token : c.GetHeader("Token")c.JSON(http.StatusOK, Token)})获得get和post信息 package mainimport ("fmt""github.com/SimonWang00…

鸿蒙 webview 出现 Can not read properties of null (reading ‘getltem‘) 错

1, 先看原来的代码 import web_webview from ohos.web.webview;interface PerUrl {url: string,age: number } Component export struct Url {controller: web_webview.WebviewController new web_webview.WebviewController();ports: web_webview.WebMessagePort[] [];Lin…

C# 设计模式之命令模式

总目录 前言 命令模式在日常中&#xff0c;也是比较常见的&#xff0c;就比如&#xff1a;妈妈和爸爸说&#xff0c;你去让孩子把地扫一下&#xff1b;这就是是一个命令&#xff0c;命令中的 下达命令的是妈妈&#xff0c;传达命令的是爸爸&#xff0c;接受命令做事的是孩子&a…

C语言学习——函数(数组作为函数参数)

目录 8.7数组作为函数参数 数组元素作函数实参 数组名作参数函数 8.7数组作为函数参数 我们知道可以用变量作函数参数&#xff0c;显然&#xff0c;数组元素也可以作函数实参&#xff0c;其用法与变量相同。此外&#xff0c;数组名也可以作实参和形参&#xff0c;传递的是数…

深入解析基于 Spring Boot 和 Element UI 的图片上传全过程

在 Web 开发中&#xff0c;图片上传是一个常见且重要的功能。本文将详细介绍一个基于 Spring Boot 后端和 Element UI 前端框架实现的图片上传功能&#xff0c;包括前端组件的配置、相关方法的调用以及后端的处理过程。 一、前端部分 1. 上传组件配置 在前端页面中&#xff…

IDEA:Dangling Javadoc comment

JetBrains对JavaDocs的描述&#xff1a; Javadoc comments are usually placed above classes, methods, or fields in your source code. A Javadoc provides a description of the code element located under it and contains block tags marked with with specific metada…