当前位置: 首页 > article >正文

sql靶场笔记

一、

第一个实验比较简单,首先观察网站大概信息,发现这是一个购物网站,然后发现一个关键地方就是,有一个分类按钮,有gift,有pet,等等,然后再看它的URL语句,发现可能存在被入侵的风险于是对它进行测试,用’+or+1=1–即可,–是URL的注释符号

然后注意的是这个地方利用的是select * from product where category = ‘pets’ AND released=1 语句的漏洞

其中select * from product where category = ‘pets’ AND released=1如果把pets里面改掉改成

select * from product where category = ‘’+or+1=1–’ AND released=1就可以把后面东西给注释掉,从而达到了注入漏洞的目的

二、

第二个实验也非常的简单一进来是一堆商品,然后没有分类之类的,右上角有我的账户,进去看了看,先输入1,等等去看看反应,观察URL发现没用,然后就直接尝试对账户进行注释,结果就成功了,administrator’—就结束了,密码无所谓,然后绑定邮箱即可

三、

第三题目,先对这个网站进行测试,也就是做前面两个实验的一些基础工作,然后根据题目,选择’+UNION+SELECT+NULL,NULL—语句就行,然后记得格式,其次就是空可以有几个累次,一个一个空去判断即可,其次另一个可以实现这道题目的语句是’ +ORDER+BY+1—

直到显示错误就说明为直到显示错误的数减1,然后在URL上不一定用大写也不一定用+号,符合格式即可

四、

第四题用UNION查询语句去确认某项东西是文本还是数字之类的,用order by 3—和order by 4—确定是3然后用文本代替NULL,然后发现提示,如果没有提示即代表正确,即代表猜中了文本类型

五、

先用’order by 2–确认然后输入三有错误说明是2列

连接网关超时,暂时搁置

第二次做,同样利用order by 语句判断2列,然后再用’ union select null,null—语句一个一个判断文本包含信息即可,然后发现都是文本,再用’+UNION+SELECT+username,+password+FROM+users—语句找到管理员密码登入即可

六、

Order by 语句判断为2列,判断第二列是文本信息

然后这边可以分别查询也就是

'+UNION+SELECT+null,+password+FROM+users—

但是有一个更简便的方法就是用string字符串连接起来在HINT里面有提到

然后查版本格式是https://portswigger.net/web-security/sql-injection/cheat-sheet

在这里面给个例子

‘ union select null,version()—即可

PostgreSQL 12.14 (Ubuntu 12.14-0ubuntu0.20.04.1) on x86_64-pc-linux-gnu, compiled by gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0, 64-bit

说明了它是什么数据库

然后用相关的查询语言即可’foo’||‘bar’

这个的格式是’ union select null,username || password from users—

但是为了让密码与账号有分割可以辨认于是再连接一个

即’ union select null,username || ‘*’ || password from users—

结束

七、

第七题不如第六题其实也就是查版本学会语法就可以了跳过

八、

与第七题一模一样

九、

第九题才真正的综合了前面所学,才有了味道,首先判断2列,但是解决里面没有告诉我们表名列名,这个情况需要我们自己去查询,先把2列信息判断了发现都是文本,然后再用’+UNION+SELECT+table_name,+NULL+FROM+information_schema.tables—这一个语句

其中table_name 和information_schema.tables是固定的应该是,通过这样可以查表名

然后找一个比较像的表名,找了许久。。。

'+UNION+SELECT+column_name,+NULL+FROM+information_schema.columns+WHERE+table_name=‘users_oftuzl’—

然后用这个语句就知道是哪一个列了

'+UNION+SELECT+username_mcjtun,+password_kjmnnh from+users_oftuzl—用这一个语句查询即可发现密码和账号

解决

十、

用查询列表语句判断2列

然后一开始用’union select null,null—不行后面发现是因为在oracle数据库里面必须要有from,而oracle数据库里面有一个固定的表dual可以去访问,因此通过这个去探测文本

发现两个都是文本信息继续

’ UNION SELECT table_name,NULL FROM all_tables—用这一个语句去爆表名

爆出来一堆一个个试试

‘ union select column_name,null from all tab_columns where table_name=’ USERS_LCXIAT’—

爆出密码列表

账户列表

'+UNION+SELECT+USERNAME_ABCDEF,+PASSWORD_ABCDEF+FROM+USERS_ABCDEF—

然后就用账号密码格式如上即可爆出管理员密码

十一、

盲注前置理论学习

在联合查询sql无法使用时,使用盲注首先要下载一个扩展,cookies编辑器去看cookie值 盲注的话就是多尝试看response去猜测数据库内容,从而去达到提取数据库内容,爆出管理员账户

因为cookies值必须要去查询对应,其实在数据库里面也就是select tracking-id from tracking-table where trackingId=啥啥啥。。

然后这个题如果原cookie已经存在页面就会返回一个welcome back如果是新的cookie就不返回

在cookie这里的注入与基本的sql相同即利用语法规则,单双引号,以及注释对网站进行注入盲注这里的一个新的知识点就是因为利用网站内源代码的机制,例如这道题目,如果cookie已经存在就回显welcome back那么我们就可以利用 and 或者or当然一般这道题目用and去注入会更好,所以 select tracking-id from tracking-table where trackingId=啥啥啥’ and 1=1–‘即可判断后面的内容是真假那么由此,我们可以利用后面的判断去判断某个表的列数,某个表的表名,列名,甚至可以盲报管理员账号等等,当然在密码复杂度比较高的情况下一般考虑,对网站的表和表名进行爆破,并且最好拿到数据库select tracking-id from tracking-table where trackingId=啥啥啥’ and (select ‘x’ from users limit 1)=‘x’–‘用这个语句如果回显welcome back那就说明那个表存在之所以这里用了那个limit 1其实也就是在说让其他东西不干扰,就是我只要查到一行有x我就回显就可以了,也就是意味着我们可以对那个表直接进行查询那我就直接select tracking-id from tracking-table where trackingId=啥啥啥’ and (select username from users where username=‘adminstrator’ )=‘adminstrator’–'那么这样就可以确认administrator是管理员账号名,如果不回显那就是其他东西,如果实在没有回显,其实我认为也可以进行文件的上传例如像xss的无回显攻击一样利用自己的服务器把想要获取的文件输入到自己服务器的文本里面用base64解码然后从而看有无回显,但其实感觉关键点还是在能不能进行sql注入,倘若被waf或者安全狗进行关键词拦截就需要用其他的语言代替,甚至无法从这一个点去进行注入

select tracking-id from tracking-table where trackingId=啥啥啥’ and (select password from users where username=‘adminstrator’)=‘welcome2021’–’

这样做了之后有一个负面效果就是基本上没有回显了因为没有password不等于后面那一串,但是好处就是我可以暴力破解进行枚举,当然在实际的网站上过多的访问也许会被安全者察觉并进行拦截,或者封禁ip从而达到隔离的效果,然后有一个机制问题用于破解密码,而这个破坏是用相对少的访问次数达到正确密码的枚举就是先判断第一个字母是什么,接下来判断第二个字母,而后第三个字母,由于一般字母就是26个或者52个(大小写)所以耐心的测试是必要的,并且还要用length函数判断密码的长度从而达到破解的效果burp的暴力入侵测试然后看密码长度,burp上可以进行多次暴力破解,但是我认为在有防范的情况下会被封禁ip所以在进行大规模的入侵时,多台电脑去进行测试把爆出来的数据库拼好也是一个非常好的手段去获取管理员权限

然后后续做完这个题目后补充一些知识,一个是burp的使用,构造payload的时候选择集束炸弹构造,然后还有过滤条目的时候搜索welcome 然后自己排序即可获得密码,然后再看看一个函数substring


http://www.kler.cn/a/286653.html

相关文章:

  • 基于SpringBoot的httpclient实现(高级版)
  • 【Nginx】【SSE】【WebSocket】Nginx配置SSE,WebSocket的转发请求
  • 【阅读笔记】基于图像灰度梯度最大值累加的清晰度评价算子
  • 【2024年终总结】深圳工作生活评测
  • 衡量算法性能的量级标准:算法复杂度
  • 计算机图形学:实验四 带纹理的OBJ文件读取和显示
  • vue3监听键盘长按
  • flutter之image_picker上传图片
  • 小琳Python课堂:Python优先级队列深入解析:`PriorityQueue`类的使用与原理
  • 访问win10共享文件夹:用户或密码不正确 以及 未授予用户在此计算机上的请求登录类型
  • 数据库课程设计:MySQL的应用与实践
  • Vue 3 Composition API 中如何正确添加表单项副本到数组
  • Spring Cloud Alibaba 快速学习之 Gateway
  • Vue59 github案例 vue-resource版本
  • Linux——nginx 负载均衡
  • 用Python实现时间序列模型实战——Day 3: 时间序列数据预处理
  • 经验笔记:理解中间件及其在软件开发中的应用
  • 通过python 操作mysql 脚本
  • 『功能项目』怪物受击后显示受击状态UI【12】
  • 通义说【线性代数】线性方程组和线性代数的关系
  • LeetCode - 11 盛最多水的容器
  • nrm|npm快速切源
  • 旅行追踪和行程规划工具AdventureLog
  • 基于微信小程序的挂号管理系统-小程序端
  • 【工具】bash、zsh的切换,使用oh-my-zsh修改颜色主题
  • 集成电路学习:什么是GUI图形用户界面