补一个day_03的思维导图:
sql注入产生的条件:有数据的接收 可以带入数据库查询 数据库不做过滤或者过滤不严谨
mysql注入分为数字型和字符型两种 为啥分这两种呢?主要-->
数字型和字符型的闭合!!!比如 模糊查询 和前后带括号 都需要一定的闭合
get和post提交
网站用php编写 源码如下:
<?php
$get=$_GET['g'];
echo $get;
$post=$_POST['p'];
echo $post;
?>
通访问 传参 将g赋值123
将p赋值
发现p没有赋值成功 因为 p采用post进行传输
需要用post进行赋值
赋值成功!
cookie注入:
网站依然使用php
源码:
<?php
$get=$_GET['g'];
echo $get;
$post=$_POST['p'];
echo $post;
$a=$_COOKIE['c'];
echo $a;
?>
通过burpsuite进行抓包
在中间插入cookie 发送即可
request注入:
request可以接受 get post cookie 3中方式的数据提交
源码:
<?php
$get=$_GET['g'];
echo $get;
$post=$_POST['p'];
echo $post;
$a=$_COOKIE['c'];
echo $a;
$r=$_REQUEST['r'];
echo $r;
?>
可以通过3种方式进行提交 如post
http头部注入:
通过更改 数据包中的 参数 从而达到 更改 页面显示参数效果的功能
example:正常访问
更改burpsuite里面的
字符型注入: 单引号闭合第五关和双引号闭合第六关
sqli的第5关 常规操作 and1=1 and 1=2 测试发现无报错 判断为 字符型注入 采用 单引号进行闭合 之后采用 and '1'= '1' 无报错 and '1'='2'进行 测试 发现 页面异常 存在注入点
或者闭合注释后面一切
sqli的第6关 常规操作 and1=1 and 1=2 测试发现无报错 判断为 字符型注入 采用 双引号进行闭合 之后采用 and "1"= "1" 无报错 and "1"="2"进行 测试 发现 页面异常 存在注入点
或者闭合注释后面一切
第11关的登陆框框 sql语句就是 普普通通的 select 加上where 上两个条件 and 判断 当都为真才执行 存在sql注入漏洞 先胡乱输入一个用户名 然后用 单引号进行闭合 换成 or 1 然后用#进行 注释后边的 语句 这样就完成了 绕过 成功登陆
这里的#不能换成--+ 因为在这个框框里面被当做了字符进行录入 不能完成 注释掉后边的功能 +号不好使的原因是因为它可以代表空格
在mysql中 注释是 --空格 进行的 所以在 url地址栏里面 我们用--+ 进行注释 +可以被url地址栏转义成空格 从而达到注释后边代码的作用