栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

web攻防世界7-12

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

web攻防世界7-12

文章目录
  • 前言
  • 7.simple_php
  • 9.xff和referer
  • 10.webshell
  • 11.command_execution
  • 12.simple_js
  • 总结


前言

记录一下学习过程


提示:以下是本篇文章正文内容,下面案例可供参考

7.simple_php

分析php的代码,发现以get方式获取数据。


    echo $flag1;
}
if(is_numeric($b)){
    exit();
}
if($b>1234){
    echo $flag2;
}
?>
  • 第一个$flag1:php是弱类型语言,在用==比较的时候,不同类型的值比较会被转化成空进行比较,所以只需要输入非数值型的字符即可显示第一个$flag。使用===就会严格比较类型。
  • 第二个flag2:is_numeric():指定的变量是数字和数字字符串则返回 TRUE;所以输入一个比1234大的字符串
    http://111.200.241.244:57651/?a=asdf&b=12345112a
9.xff和referer

xff:X-Forwarded-For: HTTP 扩展头部,主要作用是查看源ip以及代理ip
格式:X-Forwarded-For: client, proxy1, proxy2
referer:主要是网页的来源地址,服务器使用referer确认访问来源,如果referer内容不符合要求,服务器可以拦截或者重定向请求。
格式: Referer=http://www.google.com
使用bp抓包 添加进ip为123.123.123.123 和referer来源为google

返回出flag
cyberpeace{49adab36ff04a945a1578da05c09aba1}

10.webshell

点开进去上面显示一句话木马

一句话木马:通过post上传的的参数shell以php语法进行执行。
1.直接上菜刀
既然有一句话木马最方便的方法自然是直接上菜刀


2.手动测试连接
首先通过返回包,查看服务器的操作系统为ubuntu

以post参数提交命令ls 查看一下当前目录,发现恰好有flag.txt文件,system()函数调用/bin/sh来执行参数指定的命令

直接查看 flag文件获得flag

或者直接find一下 找到文件

shell=system('find / -name "flag.*" ');

11.command_execution

先简单的使用一下ping命令 发现能正常使用,而且没有waf说明没有参数的过滤,任何玩意都能写到框框里面去。

直接拼接语句查找flag

查看flag

127.0.0.1&&cat home/flag.txt
12.simple_js

怎么输入发现都是一个结果,FAUX PASSWORD HAHA。查看网页的代码,发现输入进去的pass_enc根本就没被用到,自始至终都是pass在用。



    JS
    



中间的这段代码 看似花里胡哨 实际上就是变成ascll码后拼接输出

 var tab2 = pass.split(',');var i,j,k,l=0,m,n,o,p = "";i = 0;j = tab.length;
                        k = j + (l) + (n=0);
                        n = tab2.length;
                        for(i = (o=0); i < (k = j = n); i++ ){o = tab[i-l];p += String.fromCharCode((o = tab2[i]));
                                if(i == 5)break;}
                        for(i = (o=0); i < (k = j = n); i++ ){
                        o = tab[i-l];
                                if(i > 5 && i < k-1)
                                        p += String.fromCharCode((o = tab2[i]));

直接用python输出两个数组的值

a="x35x35x2cx35x36x2cx35x34x2cx37x39x2cx31x31x35x2cx36x39x2cx31x31x34x2cx31x31x36x2cx31x30x37x2cx34x39x2cx35x30"
b=a.split(',')
c="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65" #pass数组
c=c.split(',')
# 输出a数组的ascll
for i in b:
    print(chr(int(i)),end='')
print('')
# 输出pass数组的ascll
for i in c:
    print(chr(int(i)),end='')

输出

786OsErtk12
FAUX PASSWORD HAHA

所以flag为 786OsErtk12

总结

主要涉及的知识点:
php的语言比较特点
xff和referer的定义和UA头的参数
一句话木马的原理
命令的直接拼接
js代码的简单理解

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/827744.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号