方法:在下用的firefox,鼠标右键可查看页面源代码,试了试不行。那么F12,即可得到。
收获:鼠标右键不能用,与前端函数有关,在该页面中我们可以发现有这两个函数,
1. document.oncontextmenu=new Function("return false") //是右键菜单禁用;
2. document.onselectstart=new Function("return false") //是禁止选中页面上的内容;
3. document.onselectstart=new Function("return false")//是禁止复制在页面上选中的内容;(补充)
HTTP通常的两种请求方法是get和post.
方法一:首先进入容器会看到
这时有三种方法:1.用firefox插件Max HacKBar,,得到flag;
方法二:用burp抓包,send to repeater,加上b=2 send,得到flag;
方法三:不用插件,,某位大佬的。在查看器中进行如图修改,即可得到flag。
方法:在url后加上robots.txt,会得到,然后访问flag_1s_h3re.php,即可得到flag。
收获:当一个搜索机器人(有的叫搜索蜘蛛)访问一个站点时,它会首先检查该站点根目录下是否存在robots.txt,如果存在,搜索机器人就会按照该文件中的内容来确定访问的范围;如果该文件不存在,那么搜索机器人就沿着链接抓取。并且,robots.txt必须放在一个站点的根目录下,而且文件名必须是小写。robots.txt就是告知搜索引擎哪些是允许访问的,哪些是不想被搜索引擎收录的。如果您希望搜索引擎收录网站上所有内容,请勿建立robots.txt文件。但是,robots.txt不是防火墙,不能阻止访问。
方法:在url后加上Index.php.bak,访问,在f12中,即可得到flag.
收获:常见的备份文件后缀名有:.git .svn .swp .bak .bash_history .~
php的备份有两种:*.php~和*.php.bak。 这道题也可以用py脚本解决,扫目录,即可得到地址。也可以用御剑扫描进行解决。
分析:首先会看到这个,然后f12查看,cookie,,然后就在url后加上cookie.php,访问,看到,提示我们在响应头里。
方法一:burp抓包,并send to repeater,而后send,在响应头里即可得到flag。
方法二:firefox,访问http://220.249.52.133:54804/cookie.php,f12,在网络一栏中,可看到访问cookie.php的数据包,
收获:Cookie是当主机访问Web服务器时,由 Web 服务器创建的,将信息存储在用户计算机上的文件。一般网络用户习惯用其复数形式 Cookies,指某些网站为了辨别用户身份、进行 Session 跟踪而存储在用户本地终端上的数据,而这些数据通常会经过加密处理。
方法一:打开后,发现,f12,在查看器一栏中,将disabled改为abled或直接将disabled=""删除,然后按钮就可以点了。点击即可得到flag.
方法二:审计form表单代码,post传值auth=flag,也可以得到flag.
(但是我在用Burp实现的时候却无法成功,如下图),如果哪位大佬懂的话,希望在评论区指点小弟下。
收获:html的相关标签及相应的属性
需要输入账号和密码,然后随便输入,会出现弹窗(please login as admin)在f12发现
方法:burp爆破,配置好之后,打开,抓包,send to Intruder,
然后设置爆破点为password:将admin两边的$去掉,将password的值两边加上$.
加载字典,load加载字典,然后开始爆破
发现,密码为123456时length不一样,于是在响应包里得到flag。
收获:burp的爆破功能,以及用Python,c++创建字典的方法.
题目:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
waf,web应用防火墙,Web应用防火墙是通过执行一系列针对HTTP/HTTPS的安全策略来专门为Web应用提供保护的一款产品。所以本题环境没有waf。
方法一:1.在文本框内输入127.0.0.1 | find / -name "flag.txt" ,查找flag所在位置
2.在文本框内输入 127.0.0.1 | cat /home/flag.txt 可得到flag
方法二:1.在文本框中输入127.0.0.1 && ls 查看当前目录下的文件
2.输入127.0.0.1 && ls../ 查看上一级目录
3.输入127.0.0.1 && ls../../ 查看上一级目录
4.输入127.0.0.1 && ls../../../ 查看上一级目录,发现有个home的文件,不妨打开看看
5.输入127.0.0.1 && ls ../../../home 查看该文件,发现flag.txt
6.输入127.0.0.1 && cat ../../../home/flag.txt 打开该文件,
方法三:requests库,这是xctf平台某位大佬的解题方法。同时requests库的相关使用参见这位大佬的requests库基本使用 和这位大佬的Python-第三方库requests详解 ,个人感觉收益颇丰。
收获:
| 的作用为将前一个命令的结果传递给后一个命令作为输入
&&的作用是前一条命令执行成功时,才执行后一条命令
还有相关指令要学习,find ,cat ,ls 等指令。
1234){
echo $flag2;
}
?>
题目:打开后出现如下代码,
进行代码审计:1.get传参给$a和$b,如果$a==0 且 $a ,则返回$flag1;
2.is_numeric()函数,如果$b是数字或者数字字符串,则返回ture,exit()执行;否则,并且$b>1234
,则返回$flag2;
3.这里要注意一点,php语言是弱类型比较,php中有两种比较符号
=== 会同时比较字符串的值和类型;
== 会先将字符串换成相同类型,再作比较,属于弱类型比较;
所以如果$a=string(string是任意字符串),则‘string’==0为真;
$b=12ss,则‘12ss’==12为真,
方法一:返回flag1. url后加上index.php?a=string (string为任意字符串),得到flag1的一半,还有半截未显示出来
1234){
echo $flag2;
}
?>
Cyberpeace{647E37C7627CC3E401
在url后加上index.php?a=0&b=1235a,得到flag1的另一半(别问我咋知道的,瞎试试出来的,现在还没搞懂,懂的大佬可在评论区指点一下)
1234){
echo $flag2;
}
?>
9EC69324F66C7C}
方法二:返回flag2. url后加上index.php?a=string&b=1235a (string为任意字符串),得到flag2.
1234){
echo $flag2;
}
?>
Cyberpeace{647E37C7627CC3E4019EC69324F66C7C}
题目:描述及打开后看到的
方法一:burp抓包,send to repeater,将X-Forwarded-For添加进去(注意位置),得到如下图
由图知,https要设置,于是再将Referer:https://www.google.com 插入进去,得到flag.
收获:
X-Forwarded-For:简称XFF头,它代表客户端,也就是HTTP的请求端真实的IP,只有在通过了HTTP 代理或者负载均衡服务器时才会添加该项
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器我是从哪个页面链接过来的.
这个题的相关资料:
新手区webshell
题目:打开后,就让我输密码,随便输入,出现弹窗,查看源代码。javascript里面有一段代码如下,
function dechiffre(pass_enc){
var pass = "70,65,85,88,32,80,65,83,83,87,79,82,68,32,72,65,72,65";
var tab = pass_enc.split(',');
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]));
}
p += String.fromCharCode(tab2[17]);
pass = p;return pass;
}
String["fromCharCode"](dechiffre("\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30"));
h = window.prompt('Enter password');
alert( dechiffre(h) );
开始代码审计:简化后,就是有个16进制的字符串"\x35\x35\x2c\x35\x36\x2c\x35\x34\x2c\x37\x39\x2c\x31\x31\x35\x2c\x36\x39\x2c\x31\x31\x34\x2c\x31\x31\x36\x2c\x31\x30\x37\x2c\x34\x39\x2c\x35\x30",将其转为10进制,然后根据ASCII码表对应的字符进行转化,得到flag。
方法:python
收获:
1.fromCharCode()函数
var n = String.fromCharCode(65);
输出结果: A
2.16进制字符串转10进制,python直接输出
3.数字转字符串,用遍历,chr()函数:将数组转为相应的ASCII码字符。