伪静态
1,需要开启站点的重写机制,需要修改配httpd配置文件,将LoadModule rewrite_module modules/mod_rewrite.so注释取消,需要apache支持解析.htaccess文件,找到 AllowOverride None修改为 AllowOverride ALL,重启apache
2,新建.htaccess文件,然后写入“重写规则”,
RewriteEngine on //开启重写机制
RewriteRule ([0-9]{1,})\.html$ index.php?id=$1//重写规则,([0-9]{1,})$匹配$1的值,\是转义符,html$表示Url中以html结尾
RewriteRule ([0-9]{1,}-[a-zA-Z]{1,})\.html$ index.php?id=$1&para=$2

VULHUB搭建靶场
Vulhub是一个面向大众的开源漏洞靶场,无需docker知识,简单执行两条命令即可编译、运行一个完整的漏洞靶场镜像。
https://github.com/vulhub/vulhub
https://vulhub.org/#/environments/

1,需要安装pip,是python的用来管理工具包的工具,安装compose,pip install docker-compose
2,下载vulhub,wget https://github.com/vulhub/vulhub/archive/master.zip -O vulhub-master.zip, 解压 unzip vulhub-master.zip,进入cd vulhub-master
3,启动vulhub,进入某一个漏洞/环境的目录 cd tomcat/CVE-2017-12615,之后启动整个环境docker-compose up -d,移除环境docker-compose down -v,在哪个目录启动就在哪个目录移除
运行起来的环境的端口,docker ps
pip install docker-compose下载安装好docker-compose会报错ImportError: No module named ssl_match_hostname,找不到模块ssl_match_hostname,安装会提示有最新的了,解决方法
复制模块到包路径下
#进入backports模块路径
cd /usr/local/lib/python2.7/dist-packages
#复制整个包到transport包路径下
cp -r backports /usr/local/lib/python2.7/dist-packages/docker/transport

宽字节sql注入
mysqli_query("SET NAMES 'utf8'"); 设置查询结果的字符集编码
mysqli_set_charset("utf8"); 设置存的时候的字符编码
mysqli_real_escape_string(),对参数进行过滤转义,基友类似功能的函数有,addslaches()
mysql_escape_string(php 5.3之后移除了),
魔术引号(magic_quotes_gpc模块)

特殊符号有',",\,null,<,>,等进行转义
gbk编码,针对汉字的一种编码方式,使用两个字节编码一个汉字

如果程序的默认字符集是GBK等宽字节字符集,就有可能产生宽字节注入,绕过上述过滤。
若在 PHP 中使用mysql_query("set names gbk")将默认字符集设为GBK,而使用addslashes()转义用户输入,这时如果用户输入%bb%27,则addslashes()会在%27前面加上一个%5c字符,即转义字符\。
而 MySQL 在使用GBK编码时,会认为两个字符为一个汉字,%bb%5c是一个宽字符(前一个 ASCII 码大于 128 才能到汉字的范围),也就是籠,也就是说%bb%5c%27=籠',这样单引号就未被转义能闭合语句,从而产生 SQL 注入。%bb并不是唯一一个可以产生宽字节注入的字符,理论上%81-%FE均可。
过滤\'中的\
构造%bb%5c%5c%27,addslashes()会在两个%5c和%27前都加上\即%5c,变为%bb %5c%5c %5c%5c %5c%27,但宽字符集认为%bb%5c是一个字符即籠,则变为%bb%5c %5c%5c %5c%5c %27即籠\\\\',四个\正好转义为两个\,即'未被转义。这也是 bypass 的一种方法。

测试步骤
1,访问站点,查看返回结果,http://127.0.0.1/gbksql/01/?id=1' 查看返回结果,SELECT * FROM news WHERE tid='1\''
2,http://127.0.0.1/gbksql/01/?id=1%df',高位在81以后就能用,81-fe,1%df--->1df5c-->1運',引号出来就闭合了,就可以使用语句注入了

PDO:连接数据库-->设置模版-->绑定数据-->执行sql语句
PDO prepare参数化语句,可以解决sql注入语句的原理 https://www.jianshu.com/p/c0deb8061718

二次编码注入
浏览器会对from表单中数据进行依次url解码,到达服务器之后会默认解码
php中url解码函数有,urldecode(),rawurldecode()两个函数

头部注入
x-forwarded-for:简称xff头,它代表客户端,也就是HTTP的请求端真实的Ip,通常一些网站的防注入功能会记录请求端真实Ip地址并写入数据库or某文件

2019-10-24:伪静态,VULHUB搭建靶场,宽字节sql注入,笔记的更多相关文章

  1. 宽字节SQL注入

    1.联想lelink站 例1, 联想lelink站user参数存在宽字节SQL注入 提交,user=wctest%df’ and 1=2%23 结果,出现了”運”字,如图:

  2. 第一次靶场练习:SQL注入(1)

    SQL注入1 本文章目的是对相关的黑客内容进一步了解,如有人违反相关的法律法规,本人概不负责 一.学习目的: 利用手工注入网站 利用sqlmab注入 二.附件说明 靶场网址:http://117.41 ...

  3. 2019.10.24 CSP%你赛第二场d1t3

    题目描述 Description 精灵心目中亘古永恒的能量核心崩溃的那一刻,Bzeroth 大陆的每个精灵都明白,他们的家园已经到了最后的时刻.就在这危难关头,诸神天降神谕,传下最终兵器——潘少拉魔盒 ...

  4. 2019/10/24 CSP-S 模拟

    T1 tom 题意: 考虑一定是属于\(a\)的在一坨,属于\(b\)的在一坨,找到这条连接\(a\)和\(b\)的边,然后分别直接按\(dfs\)序染色即可 注意属于\(a\)的连通块或属于\(b\ ...

  5. [靶场实战]:SQL注入-显错注入

    SQL注入的本质:就是将用户输入的数据当作代码带入执行. 注入条件: 1.用户能控制输入 2.能够将程序原本执行的代码,拼接上用户输入的数据进行执行 首先检查是否存在注入点 Rank1: 构造语句 ? ...

  6. SQL注入:宽字节注入

    了解GBK编码 尽管现在呼吁所有的程序都使用unicode编码,所有的网站都使用utf-8编码,来一个统一的国际规范.但仍然有很多,包括国内及国外(特别是非英语国家)的一些cms,仍然使用着自己国家的 ...

  7. 宽字节XSS跨站攻击

    简介 宽字节跨站漏洞多发生在GB系统编码. 对于GBK编码,字符是由两个字节构成,在%df遇到%5c时,由于%df的ascii大于128,所以会自动拼接%5c,吃掉反斜线.而%27 %20小于asci ...

  8. Alpha冲刺(1/10)——2019.4.24

    所属课程 软件工程1916|W(福州大学) 作业要求 Alpha冲刺(1/10)--2019.4.24 团队名称 待就业六人组 1.团队信息 团队名称:待就业六人组 团队描述:同舟共济扬帆起,乘风破浪 ...

  9. kali docker简单使用-vulhub搭建fastjson漏洞环境

    准备环境 安装kali和docker参考: https://www.cnblogs.com/lijingrong/p/13396884.html sudo service docker start / ...

随机推荐

  1. 基于Groovy搭建Ngrinder脚本调试环境

    介绍 最近公司搭建了一套压力测试平台,引用的是开源的项目 Ngrinder,做了二次开发,在脚本管理方面,去掉官方的SVN,引用的是Git,其他就是做了熔断处理等. 对技术一向充满热情的我,必须先来拥 ...

  2. React-Native转小程序调研报告:Taro & Alita

    一. 我们的要求 期望的要求 基于React语法,将RN项目转化为小程序项目 该小程序能同时在 微信小程序 和 支付宝小程序这两个平台运行 底线要求 底线是能转成微信小程序,因为目前来说,因为微信先发 ...

  3. react中使用redux简易案例讲解

    为什么我想要使用redux? 前段时间初步上手了react,最近在使用react的过程中发现对于组件之间通信的需求比较迫切,尤其是在axios异步请求后端数据的时候,这样的需求是特别强烈的!举个例子: ...

  4. Kafka消费者 从Kafka中读取数据并写入文件

    Kafka消费者 从Kafka中读取数据 最近有需求要从kafak上消费读取实时数据,并将数据中的key输出到文件中,用于发布端的原始点进行比对,以此来确定是否传输过程中有遗漏数据. 不废话,直接上代 ...

  5. (记录)Jedis存放对象和读取对象--Java序列化与反序列化

    一.理论分析 在学习Redis中的Jedis这一部分的时候,要使用到Protostuff(Protobuf的Java客户端)这一序列化工具.一开始看到序列化这些字眼的时候,感觉到一头雾水.于是,参考了 ...

  6. ArcGIS制作地形图【详细步骤】

    结果图: 详细步骤: 一.在ArcSence中加载带有投影坐标系的dem数据 Dem的属性设置为下图可有上面的效果. 二.提取栅格范围 找到工具[3D Analyst][转换][栅格范围]双击打开设置 ...

  7. 2018.8.3 python中的set集合及深浅拷贝

    一.字符串和列表的相互转化 之前写到想把xx类型的数据转化成yy类型的数据,直接yy(xx)就可以了,但是字符串和列表的转化比较特殊,相互之间的转化要通过join()和split()来实现. 例如: ...

  8. ajax 跨域问题处理

    第一种方法 服务端处理 response.addHeader("Access-Control-Allow-Origin", "*"); 第二种 客户端使用Jso ...

  9. Flask数据库基本操作

    数据库基本操作 在Flak-SQLAlchemy中,插入.修改.删除操作,均由数据库会话管理. 会话用db.session表示.在准备把数据写入数据库前,需要先将数据添加到会话中然后调用commit( ...

  10. nginx篇最初级用法之地址重写

    nginx服务器的地址重写,主要用到的配置参数是rewrite rewrite regex replacement flag rewrite 旧地址 新地址 [选项] 支持的选项有: last 不再读 ...