- 在2020年12月27号18点14分的时候受到了安徽省合肥市蜀山区移动网络的一个家伙的注入
- 注入来源是一个阅读量的数据表,注入当天晚上下班就发现了异常,当然文章更新的有点慢,今天熬夜记录一下
- 1.png
- 刚开始我并没有在本站的访客数据库记录中找到这个家伙的ip跟地址,虽然本站流量不大,但是由于本站监听了用户的浏览页面事件
- 只是记录访问的页面,于是找起来比较麻烦,主要是我也懒的找,我需要一个快速的方法知道注入来源以及他的地址
- 然后打开了我的监控日志找到地址,然后直接打开2020年12月27号的日志,查看18点14分的访问记录
- 2.png
- 3.png
- 发现就一个家伙请求不正常,居然几百个,这只是当时的,下面还有好几个他的几百个请求😳
- 4.png
- 通过自己的api接口查询发现是安徽省合肥市蜀山区移动网络的,然后在数据库中进行搜索,果然发现了他
- 当然出于保护用户隐私没有截取更多的信息给你们看,现在来说一下他注入的函数
- 5.png
- 6.png
- 我们选择一个来说一下,这个原理很简单利用mysql自带的if和sleep语法,也就是利用if(wherecondition,true exec,false exec)
if(now()=sysdate(),sleep(15),0);
- 就是他使用的代码,简单说来就是在我们提交post请求或者get请求中,将其中的参数设置为id=1-if(now()=sysdate(),sleep(3),0)
- 如果我们发现网页返回结果正常并且停顿了15秒才返回数据
- 那么,我们就可以断定是存在sql注入风险,接下就是放入我们的or 1=1语句获取所有我们想要的数据了
- 当然这么简单的SQL注入代码我早过滤了,他也没有等到15秒才返回数据,而是直接就返回了阅读量1
- 因为之前设计代码时候就对参数进行声明,如果第一次访问就显示1表示1个访问量,所以直接就显示1了
- 题外话
- 现在网站漏洞已经很少能够用SQL注入了,政府和学校的网站漏洞比较多,当然还有我的😭
- 由于编写程序代码的时候,并未对请求接口的数据进行合法化的检查和判断,使得程序中的变量处理不当
- 程序使用对请求接口的数据来构造动态SQL语句以访问数据库时,会发生SQL注入攻击
- 恶意的黑客可以通过SQL注入功能篡改数据库中的数据,甚至会把数据库中的数据毁坏掉
- 做为网络开发者的人来说对这种黑客行为真的是恨之入骨
- 产生原因
- 利用程序设计上的漏洞,在目标服务器上运行SQL语句以及进行其他方式的攻击,动态生成SQL语句时没有对数据进行验证
- 注入类型
- 普通注入:根据后台数据库提示有价值的错误信息进行注入
- 盲注:需要运用脚本通过仅有的判断信息(比如时间差)对表中的每一个字段进行探测,从而实现注入
- 解决方法
- 提交变量进数据库时,必须使用addslashes()进行过滤,像我们的注入问题
- 一个addslashes()也就搞定了。其实在涉及到变量取值时,intval()函数对字符串的过滤也是个不错的选择
- 对于跨站,strip_tags(),htmlspecialchars()两个参数都不错
- 对于用户提交的的带有html和php的标记都将进行转换
- 只要你把你所要执行操作的变量指定好或者对相关字符过滤严密,我想这样也就无懈可击了
【本站受到SQL注入攻击,以及原理注入与解决方法】
qaq卟言2021-01-14 02:48:37
MYSQL
开始
完结