当前位置:首页 » 《关注互联网》 » 正文

攻防世界-upload_皮皮逗逗逗的博客

23 人参与  2022年01月19日 15:58  分类 : 《关注互联网》  评论

点击全文阅读


进入场景映入眼帘

 需要注册账号

注册好之后,登录跳转页面

 突破点应该就在这里了

我们先上传一个php文件

显示不正确的文件扩展名,被拦了

用burp抓包改信息

成功上传 但是没有上传路径 只能上传不能利用

思考(题目给的是upload,给的引导思路 就是上传文件拿flag)

我试着上传jpg,png格式的图片文件

 有文件名回显,这说明文件已经被传到了数据库中,游览器又从数据库中读取了上传的文件,那么这个过程久有可能触发sql注入,那么将文件名中加入sql语句,尝试burp抓包修改

 可以看出select被过滤了,之后的尝试 from也被过滤了,那么尝试双写绕过

双写绕过成功

由此可以得出结论肯能存在sql注入.

尝试去验证sql注入的存在

 

 sql语句是执行了,但无法输出执行结果.(可能数据被过滤掉了)

那么尝试将查询结果改为16进制输出

 输出7765626(7765625 + 1) 用16进制解码字符串为web.

这里有个坑,  插入数据库文件名中如果包括SQL语句,在返回信息时,服务器将对字母进行截断(某些特殊字符也会截断或过滤) 尝试用10进制表示 conv函数(src,from_base,to_base) src是要转换的数据, from_base是原进制, to_base是目标进制.

使用CONV是因为题目过滤了回显有字母的情况,如果出现了字母则后面的内容就不显示,所以需要将16进制的内容转成10进制

构造payload '+(selselectect conv(hex(database()),16,10))+'.jpg

用了科学计数法(估计是数字太长了,这里就需要截断获取数据了

 构造payload:'+(selselectect conv(substr(hex(database()),1,12),16,10))+ '.jpg (经过测试发现长度最大为12,超过12 就会返回科学计数法表示)

通过解码得到web_up

 取下一段'+(selselectect conv(substr(hex(database()),13,12),16,10))+ '.jpg

 解码得load拼起来得web_load

有看库名,就开始爆表名,再之后是字段名

不再一一赘述 方法类似

最后得到flag

!!_@m_Th.e_F!lag


点击全文阅读


本文链接:http://zhangshiyu.com/post/33557.html

尝试  上传  过滤  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1