sqli-labs(十)(过滤注释符)

第二十三关:

这关还是一个GET型、字符串、单引符号、的有报错的sql注入,输入?id=1‘  ,页面会报错

我们继续按照之前的套路来,先输入?id=1‘ or ‘1‘=‘1

页面正常显示,说明这个地方又很有可能存在sql注入。继续输入?id=1‘ or  ‘1‘=‘1‘ %23

发现页面居然报错,从报错信息中发现我们的注释符居然没了,说明后台对注释符中做了过滤。

像这种情况,没办法用注释隔断后面的sql语句,就只能用闭合的方法了。但是这里有一点就是,实际测试中,不知道表的行数,而这里又不能使用order by。 因为order by一般在sql语句的尾部,在order by后面再使用‘闭合后面的单引号,sql会将order by 忽略掉。

例如我们输入?id=1‘ order by 300 and ‘1‘=‘1

程序永远不回出错,也就无法使用oder by进行判断了。这里就只能一点点的尝试了

依次输入

?id=1‘ union select  ‘1

?id=1‘ union select  1 , ‘1

?id=1‘ union select  1 , 1 ,‘1

发现前来个都会报错,而最后一个不报错,说明当前查询表的列数是三列。

知道是三列后,后面继续输入

?id=-1‘  union  select  1,2,‘3

可以看到,第2、3两列的数据会显示出来,由于第三列用于闭合后面的单引符号,我们只能将第二列用于查询操作。

输入?id=-1‘  union  select  1, user(),‘3  查询处当前用户名

输入?id=-1‘  union  select  1, (select group_concat(schema_name) from information_schema.schemata),‘3

原文地址:https://www.cnblogs.com/jinqi520/p/9557363.html

时间: 2024-10-30 07:06:49

sqli-labs(十)(过滤注释符)的相关文章

SQL注入(过滤空格和--+等注释符)

1.地址:http://ctf5.shiyanbar.com/web/index_2.php(过滤了空格和--+等注释符) 思路:确定注入参数值类型,直接输入单引号,根据报错信息确定参数值类型为字符型,如下图所示. 2.正常思路输入' or '1'='1,直接报错,信息为SQLi detected!,首先猜测or被过滤,直接去掉or,继续输入' '1'='1, 仍然报错,信息为SQLi detected!,猜测空格被过滤,直接输入'or'1'='1,如下图所示,确定空格被过滤. 3.尝试使用多行

Sqli labs系列-less-1 详细篇

要说 SQL 注入学习,网上众多的靶场,就属 Sqli labs 这个系列挺不错的,关卡达到60多关了,我自己也就打了不几关,一个挺不错的练习SQL注入的源码. 我一开始就准备等我一些原理篇总结完了,我就开始弄这个,毕竟这个里面涉及到的 SQL 注入知识很全,我贴一个下载地址:Sqli labs系列下载地址 对了还有我这个系列的头顶图,那个图是某个低调群的活跃用户装X墙,纯属装 X ,娱乐着玩了,大家别当真哈. 开了正文开始了! 首先我们先开始第一关,然后构造下注入环境,也就是在 http://

02-c#基础之c#中的注释符

1.注释符 1)注销 2) 解释 2.C#中的3种注释符 1)单行注释// 2)多行注释/*要注释的内容*/ 3)文档注释///多用来解释类或者方法 2.VS中的快捷键

黑马程序员————C语言基本语法(关键字、标识符、注释符、变量、Scanf函数)

第一讲 关键字 1.什么是关键字? 1) 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2) C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 C语言关键字 auto局部变量(自动储存) break 无条件退出程序最内层循环 case   switch 语句中选择项 char  单字节整型数据 const  定义不可更改的常量值 continue 中断本次循环,并转向下一次循环 default switch 语句中的默认选择项 do  用于构成do.....while

c++ cout<< cin>> 注释符 详解

std::cout是在#include<iostream>库中的ostream类型中的对象 std::表示命名空间,标准库定义的所有名字都在命名空间std中 std::cout是在#include<iostream>库中的istream类型中的对象 std::cout<<a<<std::endl; 上条语句中<<是输入运算符,就是将大头的那边的量弄进箭头所指的对象中,并返回运算之后的箭头所指的对象 std::endl是一个操纵符,作用是结束当前行

Sqli labs系列-less-2 详细篇

就今天晚上一个小插曲,瞬间感觉我被嘲讽了. SQL手工注入这个东西,杂说了吧,如果你好久不玩的话,一时说开了,你也只能讲个大概,有时候,长期不写写,你的构造语句还非常容易忘,要不我杂会被瞬间嘲讽了啊...好歹我也是上打过网络安全攻防平台,注入卡在第七关,我下玩过 web_for_pentester ,web渗透靶机2pentester_II_i386,这些靶场的小菜比... 好了,不扯了,现在开始扯这个第二关. 原本想着明天闲着没事了玩玩吧,后来,我今天也是闲的没事,我就继续开始玩玩吧. 结果玩

linux下arm汇编注释符

注意使用 @ 符 # 是整行注释符 @ 是行内注释符 以为 @ 是行内注释符,害我调试了半天.

符号(注释符+转义符+接续符)

注释符: 1 #include <stdio.h> 2 int main() 3 { 4 int/*...*/i; //int i; 5 char* s = "abcdefgh //hijklmn"; //s[]=abcdefgh //hijklmn; 6 //Is it a \ 7 valid comment? //Is it a valid comment? 8 in/*...*/t i; //in t i; 9 return 0; 10 } 注释规则: 注释符的处理方

SQL 注释符、运算符与通配符

注释符是对代码给出解释或说明: 运算符是Transact-SQL语言重要组成,常见的运算符有算术运算符.赋值运算符.比较运算符.逻辑运算符等. 通配符有 %._(下划线).[].[^]. 注释符 在Transact-SQL中,可使用两类注释符: ANSI标准的注释符(--),用于单行注释,如下面SQL语句所加的注释 use pubs --打开数据表 与C语言相同的程序注释符号,即 “/*”.“*/” 把所选的行一次都注释的快捷键是 Ctrl + Shift +C:一次取消多行注释的快捷键是 Ct