当前位置: 首页 > news >正文

【网络安全实验室】SQL注入实战详情

如果额头终将刻上皱纹,你只能做到,不让皱纹刻在你的心上

1.最简单的SQL注入

查看源代码,登录名为admin

在这里插入图片描述

最简单的SQL注入,登录名写入一个常规的注入语句:

密码随便填,验证码填正确的,点击登录

得到我的座右铭(flag)

在这里插入图片描述

2.最简单的SQL注入(熟悉注入环境)

查看源代码,访问url:

在这里插入图片描述

构造页面并访问

返回正常

返回出错,说明存在SQL注入

在这里插入图片描述

判断字段数

页面返回正常,说明有三个字段

在这里插入图片描述

判断回显点

我们可以在如图所示位置进行查询

在这里插入图片描述

查询数据库名为mydbs

在这里插入图片描述

查询数据表为sae_user_sqli3

在这里插入图片描述

查询字段名为id,title,content

在这里插入图片描述

查询字段内容

得到

在这里插入图片描述

3.防注入

本关尝试使用宽字节注入,添加单引号会出现空白页,没有报错,使用

成功报错,找到注入点

在这里插入图片描述

构造语句

页面正常回显,说明or语句执行成功可以注入!

在这里插入图片描述

构造语句

得到

另外一种方法是像上一关一样操作,只是需要构造语句

在这里插入图片描述

确定字段长度:

确定显示位:

得到数据库:

在这里插入图片描述

得到列名:

在这里插入图片描述

得到字段:

在这里插入图片描述

4.到底能不能回显

经过测试,只有start参数有作用,num参数并没有作用。

构造payload:

查询数据库名:

在这里插入图片描述

查询数据表名:

在这里插入图片描述

查询列名:(由于分号被过滤了,只能将表名转换成16进制)

在这里插入图片描述

查询flag:

在这里插入图片描述

5.邂逅

加宽字节注入,因为无回显,所以用burp注入

构造payload:

查询注入点:

页面报错

在这里插入图片描述

查询列数:4列

在这里插入图片描述

查询显示位:3

在这里插入图片描述

查询数据库:mydbs

在这里插入图片描述

查询表名:article,pic

在这里插入图片描述

查询列名:id,picname,data,text

在这里插入图片描述

查询数据(flag):

在这里插入图片描述

将图片后缀改为

访问url:

得到flag

在这里插入图片描述

6.ErrorBased

本题考查mysql的报错注入

查询数据库名:mydbs

在这里插入图片描述

查询数据表名:log,motto,user

在这里插入图片描述

查询motto表的下的列名:id,username,motto

在这里插入图片描述

查询id字段的值:0,1,2,100000

在这里插入图片描述

查询username字段的值:admin,guest,test,#adf#ad@@#

在这里插入图片描述

查询motto字段的值:mymotto,happy everyday,nothing

在这里插入图片描述

对比两次注入的结果,发现username字段比motto字段多一个结果,这说明flag可能就在被隐藏的结果中

再次构造语句,直接查询第四个值,得到notfound! 根据提示flag不带key和#

在这里插入图片描述

7.盲注

本题使用延时盲注

判断当前数据库名长度为5,页面没有延时,说明数据库长度为5

判断库名第一个值为m,页面没有延时,说明数据库第一个值为m

以此类推,数据库名为mydbs

判断表名第一个表的第一个值为l,页面没有延时,说明第一个表的第一个值为l

以此类推,数据表名为log,motto,user

判断motto表中第一个字段的第一个值是i,页面没有延时,users表中第一个字段的第一个值是i

以此类推,数据表motto中的字段值为id,username,motto

判断motto表中第一个内容的第一个值为m,页面没有延时,motto表中第一个内容的第一个值为m

以此类推,得到flag

延时注入太慢了,sqlmap跑也比较慢

在这里插入图片描述

8.SQL注入通用防护

本题提示过滤了GET/POST,所以我们猜测是否可以进行cookie注入,使用burp抓包

在cookie处构造字段

回显正常

回显错误,说明此处存在数字型SQL注入

在这里插入图片描述

查询字段数目

最后得到字段数目是3。

查询显示位,得到显示位是2,3

查询数据库名,得到数据库名为mydbs

查询表名,得到在当前数据库中的表有sae_manager_sqli8,sae_user,sqli8

查询sae_manage_sqli8表中的字段,得到了id,username,password这3个字段

查询flag,IamFlagCookieInject!

在这里插入图片描述

9.据说哈希后的密码是不能产生注入的

查看关键源

"select * from 'user' where userid=".intval($_GET['userid'])." and password='".md5($_GET['pwd'], true) ."'"

对传入的userid使用了intval()函数转化为数字,同时将password使用md5()函数进行转化。这就是一个典型的MD5加密后的SQL注入。

其中最主要的就是md5()函数,当第二个参数为true时,会返回16字符的二进制格式。当为false的时候,返回的就是32字符十六进制数。默认的是false模式。具体的差别通过下面这个代码来看。

md5(‘123’) //202cb962ac59075b964b07152d234b70

md5(‘123’,true) // ,�b�Y[�K-#Kp

只要md5(str,true)之后的值是包含了’or’这样的字符串,那么sql语句就会变为select * from users where usrid=“XXX” and password=‘‘or’’。如此就可以绕过了。

提供一个字符:ffifdyop

md5后,276f722736c95d99e921722cf9ed621c

可以伪造成

select * from user where userid=‘1’ and pwd = '‘or’6É]™é!r,ùíb’

从而成功绕过,得到Flag:

payload:

在这里插入图片描述

本文poc、工具、源码加圈获取

1、本圈主要分享:攻防及SRC实战经验分享、代码审计漏洞详情及代码、最新漏洞详情及原创漏洞利用工具、免杀手法及工具代码、问题解答等。
2、圈主出身于深信服深蓝攻防实验室、新华三攻防实验室,连续5年多次获得国家级、省级、地市级、行业级护网攻击队前三名。
3、漏洞盒子总榜前五十名、补天总榜前五十名、去哪网SRC总榜前五十名。
4、获得50+CVE通用漏洞编号、100+CNVD通用漏洞证书。
5、CSDN、公众号、博客、先知社区、SecIN、FreeBuf粉丝量10000+。
6、前1-50名: 25¥,50-100名: 50¥,100-150名: 75¥,依次类推.....!

知识星球

img

纷传

img

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。

免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。

转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。

http://www.lryc.cn/news/513409.html

相关文章:

  • 华为,新华三,思科网络设备指令
  • WebRTC线程的启动与运行
  • Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
  • 第9章 子程序与函数调用
  • manacher算法
  • Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配
  • 为什么需要 std::call_once?
  • ubuntu非root用户操作root权限问题-virbox挂在共享文件夹
  • 网络通讯协议
  • centos,789使用mamba快速安装devtools
  • 【人工智能机器学习基础篇】——深入详解强化学习之常用算法Q-Learning与策略梯度,掌握智能体与环境的交互机制
  • 银河麒麟桌面v10sp1修复引导笔记
  • 深入理解 MVCC 与 BufferPool 缓存机制
  • vue实现下拉多选、可搜索、全选功能
  • 探秘Kafka源码:关键内容解析
  • Android音频效果处理:基于`android.media.audiofx`包的原理、架构与实现
  • LeetCode - 初级算法 数组(两个数组的交集 II)
  • SQL 实战:分页查询的多种方式对比与优化
  • 汇川Easy系列正弦信号发生器(ST源代码)
  • JavaSpring AI与阿里云通义大模型的集成使用Java Data Science Library(JDSL)进行数据处理
  • Three.js教程002:Three.js结合Vue进行开发
  • pycharm+anaconda创建项目
  • vue2中遇到的问题与解决方案(自用)
  • CF2043b-B. Digits
  • ultralytics库RT-DETR代码解析
  • (七)- plane/crtc/encoder/connector objects
  • 基于STM32的四轴飞行器的控制系统(论文+源码)
  • 混合精度训练(Mixed Precision Training)中为什么在训练过程中不直接使用bf16进行权重更新?中英双语
  • 【java】HashMap的实现原理
  • FCM32F103C8T6开发指引