博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL注入代码分析
阅读量:4618 次
发布时间:2019-06-09

本文共 1446 字,大约阅读时间需要 4 分钟。

仔细看了下dvwa里面的sql注入,对此加以分析,为什么会导致该问题。

以下代码是安全性最低的,且看下:

' . mysql_error() . '' ); $num = mysql_numrows($result); $i = 0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '
';        echo 'ID: ' . $id . '
First name: ' . $first . '
Surname: ' . $last; echo '
'; $i++; }}?>

在一开始,仅仅只对提交的数据判断是否为空,如果不为空则直接把数据带入查询,导致sql注入的产生。

数据没有经过任何的过滤手段,攻击者只需要填入非空的数据,即可达到注入的目的。

再看安全级别中等的代码:

' . mysql_error() . '' ); $num = mysql_numrows($result); $i=0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '
';        echo 'ID: ' . $id . '
First name: ' . $first . '
Surname: ' . $last; echo '
'; $i++; }}?>

该级别唯一改善的就是对符号的转意,但并不能阻止我们注入。

mysql_real_escape_string函数仅仅是为了转义某些特殊符号,例如'号,可以直接转义。
让它不能注入。这里与中级不同的就是在这。

再看高级的:

' . mysql_error() . '' ); $num = mysql_numrows($result); $i=0; while ($i < $num) { $first = mysql_result($result,$i,"first_name"); $last = mysql_result($result,$i,"last_name"); echo '
';            echo 'ID: ' . $id . '
First name: ' . $first . '
Surname: ' . $last; echo '
'; $i++; } }}?>

高级的比上面多了一个去除换行符号,也就上下文的概念。,

 

转载于:https://www.cnblogs.com/xiaoCon/archive/2013/05/03/3056435.html

你可能感兴趣的文章
织梦多域名解析到同一个空间导致打开链接不一致怎么办?
查看>>
Xcode10 library not found for -lstdc++ 找不到问题
查看>>
Mysql 8.0.13如何重置密码
查看>>
发布功能完成
查看>>
excel 合并单元格
查看>>
iOS设计模式简介
查看>>
c# 扩展方法 奇思妙用 高级篇 九:OrderBy(string propertyName, bool desc)
查看>>
C语言中的地址传递(传指针,传递给形参的指针仍然是实参指针的一份拷贝)
查看>>
redis缓存数据库及Python操作redis
查看>>
opencms忘记Admin用户登录密码解决方案
查看>>
forms组件
查看>>
create-react-app 配置sass
查看>>
02_关系数据库
查看>>
在win7电脑中如何查看运行进程的PID标识符
查看>>
[Vue] vue-cli3.0安装
查看>>
shell中如何进行算术运算
查看>>
为什么所有的架构都是糟糕的
查看>>
PageControl的小点点随ScrollView滑动而变动代码
查看>>
(十三)在ASP.NET CORE中使用Options
查看>>
关于博主
查看>>