SQL注入 1-3_基于post报错注入

**

SQL注入 1-3_基于post报错注入

**
一.概念
客户端提交参数基于post
1.基于post注入不会拼接到url
2.相对get提交参数更加安全
3.但是依然可以使用代理(中间人)截断判断是否存在sql注入

在这里插入图片描述
二.基于post报错的实列

1.打开登陆页面

按照常规的符号手段,观察以下三张图,并没有报错

当然也可以使用 id=1 and 1=2 和 id=1’ and ‘1’ = 1’一样没有反应

由此判断我们应该使用代理,因为他是基于post,无法拼接到url
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
打开代理截断,和burpsuite
在这里插入图片描述
提交任意登陆参数
在这里插入图片描述
可以看到我们发送的所有的信息
在这里插入图片描述
点击action 然后发生到repeater
repeater的作用:可以修改发送的参数,达到注入目的
在这里插入图片描述
可以看到已经发送过去了
在这里插入图片描述
我们使用反斜杠测试
在这里插入图片描述
向右看,可以看到服务器报错
则我们可以推测他应该是基于报错 的post注入
在这里插入图片描述
我们可以大致的推测出sql语句
在这里插入图片描述
在存在注入的的位置,使用万能密码
如果没有严格过滤提交的参数
则可以绕过登陆
在这里插入图片描述

可以看到我们已经登录了后台
并且爆出了用户的密码和账户
在这里插入图片描述
我们再来看看源码
确实和我们的猜测一样,没有过滤机制
并且是 使用 ‘’ 包含参数
在这里插入图片描述

好,我们接着看下一个,直接看看源码
可以看到,程序员是使用了双引号和括号包含了参数
在这里插入图片描述
同样的方法代理截断,并且输入反斜杠,让他报错,当然也可以使用其他,符号手段
在这里插入图片描述
往右边可以看到,又报错了
在这里插入图片描述
我们又大致猜出了他的sql语句
在这里插入图片描述
在-- 空格 前面输入万能密码,同样成功登陆并且获得密码

当然在前面也可以输入其他sql语句

和get手工注入一样的
在这里插入图片描述

三.使用sqlmap探测
首先登陆,
然后代理截断
在这里插入图片描述

将截断的内容复制保存到root/下,保存名为passwd.tet
在这里插入图片描述
在这里插入图片描述

-r 使用刚刚截断的文件
-p 指定注入位置
并且指定探测技术
和指定当前使用的数据库

在这里插入图片描述

可以看到成功的到当前数据库名,
当然也可以其他详细的注入
在这里插入图片描述

总结
1.当发现是post提交参数时,使用代理截断手段
2.判断大致sql语句,分析出sql语句,并且知道是字符型注入还是整型
3.接下来使用万能密码,也可以拼接sql语句,和get的报错一样的写法
4.如果判断出类型,可以直接使用sqlmap探测,不用那么麻烦
5.能够注入的关键原因还是,参数过滤不完善,程序员应该使用多重过滤 比如,先正则,在使用多个过滤函数

发布了15 篇原创文章 · 获赞 2 · 访问量 2422

猜你喜欢

转载自blog.csdn.net/weixin_44110913/article/details/103378235