【网络安全实验室】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¥,依次类推.....!
知识星球

纷传

文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
相关文章:
【网络安全实验室】SQL注入实战详情
如果额头终将刻上皱纹,你只能做到,不让皱纹刻在你的心上 1.最简单的SQL注入 查看源代码,登录名为admin 最简单的SQL注入,登录名写入一个常规的注入语句: 密码随便填,验证码填正确的,点击登录…...
华为,新华三,思科网络设备指令
1. 设备信息查看 华为 display version # 查看设备版本信息 display device # 查看设备硬件信息 新华三(H3C) display version # 查看设备版本信息 display device # 查看设备硬件信息 锐捷 show version …...
WebRTC线程的启动与运行
WebRTC线程运行的基本逻辑: while(true) {…Get(&msg, …);…Dispatch(&msg);… }Dispatch(Message *pmsg) {…pmsg->handler->OnMessage(pmsg);… }在执行函数内部,就是一个while死循环,只做两件事,从队列里Get取…...
Day3 微服务 微服务保护(请求限流、线程隔离、服务熔断)、Sentinel微服务保护框架、分布式事务(XA模式、AT模式)、Seata分布式事务框架
目录 1.微服务保护 1.1.服务保护方案 1.1.1 请求限流 1.1.2 线程隔离 1.1.3 服务熔断 1.2 Sentinel 1.2.1.介绍和安装 1.2.2 微服务整合 1.2.2.1 引入sentinel依赖 1.2.2.2 配置控制台 1.2.2.3 访问cart-service的任意端点 1.3 请求限流 1.4 线程隔离 1.4.1 OpenFeign整合Senti…...
第9章 子程序与函数调用
汇编语言是一种低级编程语言,它几乎是一对一地映射到计算机的机器码指令。在汇编语言中实现循环结构通常涉及到使用条件跳转指令(如 JMP、JE、JNE 等)来控制程序流程。下面我将通过一个简单的例子来讲解如何用x86汇编语言实现一个循环结构。 …...
manacher算法
Manacher 算法快速入门 Manacher 算法是一种用于寻找字符串中最长回文子串的高效算法,时间复杂度为 O(n)。 基本概念 回文 回文是一个字符串,从左到右和从右到左读都一样。 示例: 回文:"aba"、"abba"非回…...
Cocos2dx Lua绑定生成中间文件时参数类型与源码类型不匹配
这两天维护的一个项目,使用arm64-v8a指令集编译时遇到了报错,提示类型不匹配,具体报错的代码【脚本根据C源文件生成的中间文件】如下: const google::protobuf::RepeatedField<unsigned long long>& ret cobj->equi…...
为什么需要 std::call_once?
std::call_once 是 C 标准库中的一个函数,用来确保某个操作仅被执行一次,通常用于线程安全的初始化操作。它常与 std::once_flag 结合使用,后者用于标记某个操作是否已经执行过。 为什么需要 std::call_once? 在多线程程序中&am…...
ubuntu非root用户操作root权限问题-virbox挂在共享文件夹
首先讲一下,virtuallbox 挂在文件夹,操作的时候总是需要root权限,比较费劲。 这一操作其实也正对着我们在Ubuntu上的操作。 前段时间我想在ubuntu正常用户下去操作i2c,也出现了类似的问题。 后来把正常的操作加到组里面也解决了类…...
网络通讯协议
层次协议应用层HTTP, HTTPS, FTP, SMTP, POP3, IMAP, DNS, DHCP, SNMP, Telnet, SSH, SIP, RTP, RTCP, TFTP, NTP, ICMP, IGMP传输层TCP, UDP网络层IP, ICMP, IGMP数据链路层Ethernet, PPP, HDLC, ATM, Frame Relay ISO/OSI 参考模型协议应用层HTTP, HTTPS, FTP, SMTP, POP3, …...
centos,789使用mamba快速安装devtools
如何进入R语言运行环境请参考:Centos7_miniconda_devtools安装_R语言入门之R包的安装_r语言devtools包怎么安装-CSDN博客 在R里面使用安装devtools经常遇到依赖问题,排除过程过于费时,使用conda安装包等待时间长等。下面演示centos,789都是一…...
【人工智能机器学习基础篇】——深入详解强化学习之常用算法Q-Learning与策略梯度,掌握智能体与环境的交互机制
深入详解强化学习之常用算法:Q-Learning与策略梯度 强化学习(Reinforcement Learning, RL)作为机器学习的一个重要分支,近年来在多个领域取得了显著成果。从棋类游戏的人机对战到自主驾驶汽车,强化学习技术展示了其强大…...
银河麒麟桌面v10sp1修复引导笔记
1.安装双系统最好备份esp分区,uefi引导丢失可以用diskgen,选择工具再点击设置uefi bios,鼠标右键选择efi文件。 2.银河麒麟界面添加windows,复制EFI/Microsoft或者pe生成引导文件后,修复Windows引导用下面命令 /桌面# update-gru…...
深入理解 MVCC 与 BufferPool 缓存机制
深入理解 MVCC 与 BufferPool 缓存机制 在 MySQL 数据库中,MVCC(Multi-Version Concurrency Control)多版本并发控制机制和 BufferPool 缓存机制是非常重要的概念,它们对于保证数据的一致性、并发性以及提升数据库性能起着关键作用…...
vue实现下拉多选、可搜索、全选功能
最后的效果就是树形的下拉多选,可选择任意一级选项,下拉框中有一个按钮可以实现全选,也支持搜索功能。 在mounted生命周期里面获取全部部门的数据,handleTree是讲接口返回的数据整理成树形结构,可以自行解决 <div c…...
探秘Kafka源码:关键内容解析
文章目录 一、以kafka-3.0.0为例1.1安装 gradle 二、生产者源码2.1源码主流程图2.2 初始化2.3生产者sender线程初始化2.4 程序入口2.5生产者 main 线程初始化2.6 跳转到 KafkaProducer构造方法 一、以kafka-3.0.0为例 打开 IDEA,点击 File->Open…->源码包解…...
Android音频效果处理:基于`android.media.audiofx`包的原理、架构与实现
Android音频效果处理:基于android.media.audiofx包的原理、架构与实现 目录 引言Android音频框架概述android.media.audiofx包简介音频效果处理的原理 4.1 音频信号处理基础4.2 常见音频效果android.media.audiofx的架构设计 5.1 类结构分析5.2 设计模式应用系统定制与扩展 6…...
LeetCode - 初级算法 数组(两个数组的交集 II)
两个数组的交集 II 这篇文章讨论如何求两个数组的交集,并返回结果中每个元素出现的次数与其在两个数组中都出现的次数一致。提供多个实现方法以满足不同场景需求。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定两个整数数组 nums1 和 nums2,以数…...
SQL 实战:分页查询的多种方式对比与优化
在处理大数据表时,分页查询是非常常见的需求。分页不仅可以提高用户体验,还能有效减少数据库查询返回的数据量,避免一次性加载大量记录引起的性能瓶颈。 然而,在数据量较大或复杂查询中,简单的分页方式可能导致性能下降…...
汇川Easy系列正弦信号发生器(ST源代码)
正弦余弦信号发生器CODESYS和MATLAB实现请参考下面文章链接: 正弦余弦信号发生器应用(CODESYS ST源代码+MATLAB仿真)_st语言根据输入值,形成正弦点-CSDN博客文章浏览阅读410次。本文介绍了如何在CODESYS编程环境中创建正弦和余弦信号发生器。通过详细的PLC梯形图和SCL语言代码…...
深耕财税赋能+精准GEO推广 好账本兰宝玺双线发力助企破局
在数字经济飞速发展的当下,财税服务的专业性与营销推广的精准度,成为中小微企业稳健成长的两大核心支撑。深耕苏州、昆山财税领域八年的98后实干者兰宝玺,依托好账本财税平台的坚实后盾,不仅以精细化财税服务为创业者保驾护航&…...
别再只用结构体了!C++17/20实战中std::tuple的5个高效替代场景(附代码)
别再只用结构体了!C17/20实战中std::tuple的5个高效替代场景(附代码) 当我们需要在C中组合多个不同类型的数据时,结构体(struct)通常是首选方案。但现代C(特别是C17/20)中的std::tuple提供了一种更灵活的选…...
别再只看功率了!用LRS-200-24开关电源给电机供电,我踩过的这个坑你得知道
电机供电实战:LRS-200-24电源选型中那些教科书不会告诉你的细节 深夜的厂房里,两台24V直流电机突然像哮喘发作般间歇性抽搐,伴随开关电源指示灯疯狂闪烁——这个场景让现场工程师血压飙升。当教科书上的功率计算公式遭遇真实世界的电机启动电…...
深入解析RISC-V CLINT:多核中断与定时器编程实战
1. 项目概述:深入理解SiFive U54内核的CLINT如果你正在基于SiFive的Freedom U540 SoC或者类似的RISC-V多核平台进行嵌入式开发,特别是涉及到操作系统移植、多核启动或者中断管理,那么“CLINT”(Core-Local Interruptor,…...
别再只会下载了!手把手教你用STLINK-V3调试STM32F4,实战断点与寄存器查看
从烧录器到调试利器:STLINK-V3在STM32开发中的高阶应用 第一次接触STM32开发时,我们往往把STLINK当作一个简单的程序烧录工具——连接SWD接口,点击下载按钮,等待进度条走完。这种认知让很多开发者错过了STLINK最强大的功能&#x…...
出口欧美设备机箱:必须符合HASCO模架与DME顶针标准
在出口欧美市场的设备机箱领域,符合HASCO模架与DME顶针标准是至关重要的。这不仅关乎产品的质量和性能,还影响着企业在国际市场的竞争力。本文将深入探讨这一标准的重要性,并结合深圳市机汇五金制品有限公司(以下简称“机汇五金”…...
接入 Taotoken 后从账单明细中分析各阶段模型使用占比与成本变化
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 接入 Taotoken 后从账单明细中分析各阶段模型使用占比与成本变化 在项目开发中引入大模型能力后,一个常见的困惑是&…...
Vue3生态系统:打造完整的前端开发体系
Vue3生态系统:打造完整的前端开发体系 前言 大家好,我是前端老炮儿。今天咱们来聊聊Vue3的生态系统。 如果说Vue3是一辆超级跑车,那它的生态系统就是配套的加油站、维修站和改装厂。一个好的框架不仅要有强大的核心能力,还要有…...
别再凭感觉布线了!用ADS仿真手把手教你搞定PCB信号完整性的5种端接方案
高速PCB设计实战:5种端接方案在ADS中的精准仿真与选型指南 当你在深夜盯着示波器上扭曲的方波和顽固的振铃时,是否曾怀疑过自己的PCB设计生涯?信号完整性不是玄学,而是一门可以通过仿真精确控制的工程艺术。本文将用Keysight ADS&…...
从蓝桥杯嵌入式真题到项目实战:如何把赛题代码改造成一个可配置的电压监控系统?
从竞赛到实战:构建可配置电压监控系统的嵌入式开发指南 参加过蓝桥杯嵌入式竞赛的同学,往往在赛后会有这样的困惑:那些为比赛而写的代码,真的能在实际项目中复用吗?答案当然是肯定的。本文将带你从第十届蓝桥杯嵌入式真…...
