首页 > 其他分享 >NSSCTF靶场题解(6)

NSSCTF靶场题解(6)

时间:2024-08-06 20:56:11浏览次数:14  
标签:password .. 回显 题解 flag 过滤 靶场 php NSSCTF

站在小白的视角上,写了在写题目的wp方面更多是想体现题目思考的逻辑和细节,更多是写给同样新手小白的内容,解题方面为什么从这一步到下一步的,很助于培养思考题目的逻辑思维,尽我所能把细节阐释到位,有些地方可能理解说辞不是特别到位,如果有问题就麻烦各位大佬师傅指点~

这次题解库收集了很多2024LitCTF【web方向】的内容。

个人认为刚入门web安全这块可以去NSSCTF靶场上刷一下LitCTF的题。比较简单~

其他刷题记录可以在博客主页上看到。主方向是web。


目录

[LitCTF 2024]高亮主题(划掉)背景查看器

[LitCTF 2024]SAS - Serializing Authentication

[LitCTF 2024]exx

[GXYCTF 2019]BabySqli


[LitCTF 2024]高亮主题(划掉)背景查看器

开题。

代码审计一下:

GET传参url,如果url之中含有【..】则回显【Access denied.】

反之则对传入的url进行文件包含。

综上。题目方向基本上是文件包含漏洞。

本想试试如果触发过滤机制。

就传入了:/?url=../../../flag.php

但并没有设想中的回显【Access denied.】

什么都没有回显。

我再传入:/?url=php://filter/convert.base64-encode/resource=flag.php 也是一样的结果。不报错也没有任何反应。

这可能意味着。参数url确实允许传入,但是不论我们传入什么都会被替换成空【避免被执行PHP代码】或者只是当作字符串。

但是注意到。我们用hackbar传参的时候。POST方法处有一个【theme1.php】

.php?

非常可疑。

试试它有没有反应。

这个回显就意味着,theme处才存在真正的文件包含漏洞。

而且根据它的报错回显

Warning: include(): Failed opening 'themes/../../' for inclusion(include_path='.:/usr/local/lib/php') in /var/www/html/index.php on line 11

看到【../】大概方向是目录穿越漏洞。【个人经验之谈。】

本来写的好好的。用BP抓包才发现原来我根本没写../../../../../../flag

实际操刀建议用BP。稳妥一些。

不知道为什么用Hackbar发包就是只给我传【../../】,其实我写的是【../../../../../../flag】。

拿到flag咯。算是一道简单的文件包含题目。

[LitCTF 2024]SAS - Serializing Authentication

开题。

随便写了点东西点击绿按钮看看什么反应。【建议结合BP看看】

再结合初始页面的码源。大概是个简单的php反序列化。

只要对对应的用户名【admin】和密码【secure_password】对应上了就好了。

具体参考这段代码:

$this->username === 'admin' && $this->password === 'secure_password';

这个poc链非常好造。

//poc
​
<?php
highlight_file(__FILE__);
class User
{
​
    public $username;
    public $password;
}
​
$a=new User();
$a->username ="admin";
$a->password = "secure_password";
​
#结合页面内容:$user = unserialize(base64_decode($data));而我们传入的就是data
$b=serialize($a);
$c=base64_encode($b);
echo $c;
?>
这里是我编写好上述php代码后放进phpstudy_pro的WWW目录下,再开好阿帕奇服务器,最后本地访问的结果。

传入。

得到flag。

[LitCTF 2024]exx

开题。

...

我勒个pornhub。

既然说是XXE,为了确定一下,我们随便输入一些密码登入再发包看看。

用最原始的payload读flag文件:【这里无过滤用模板即可】

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE data [
<!ENTITY xxe SYSTEM "file:///flag">
]>
<user><username>
&xxe;
</username><password>123456</password></user>

撇开这道题,以后同类型的题目如果有过滤其他字符我们可以找替换。这道题的payload基本上就是最原始的,适用范围很大。

[GXYCTF 2019]BabySqli

开题。

一个登入界面。由于是SQL注入的题。

我们测试看看哪个地方是注入点。

就用最常用的单引号去测试一下。

 

 

ok。测试结果很明显。用户名那边是我们的爆破点。SQL注入类型为字符型。

回显内容:

Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''admin''' at line 1 

看看万能密码可不可以登入。

看来是碰到过滤了。看看是什么东西被过滤了。【预计是关键字】

测试到现在为止,我们可以知道,【#,1,‘,空格】都不是被过滤的。

等于应该被过滤了。

结合前面的内容,目测是or被过滤。

不放心可以再来个sql_fuzz字典爆破一下。

//sql_fuzz.txt过滤项【以下内容均被ban】
​
or
xor
(
)
=
'1'='1
oorr
floor
rand()
information_schema.tables
concat_ws()
order
CAST()
format
ord
for
=

确实如预计所言,等号和or都被ban了。

我们要是想判断字段回显数,可以结合sql数据库大小写敏感这个特点绕过对于or的过滤。

payload:

1'Order by 1#

但 3 的时候都是可以回显的。说明只有三个字段。而且表单名大概是 id,username,password

看看哪个字段回回显。

1'union select 1,2,3#

没有任何提示性线索,这就意味着我无法确定哪个字段可以回显。

没什么思路了。

先信息搜集一下【扫目录,看码源,BP抓包看回显和发包内容】,看看有什么有用的。

在码源处发现一串长码。

只有大写字母和数字。应该是base32编码【base32编码特征】

base64编码应该是【有大小写字母,加上结尾两个等号。】算一个小常识。

拿去base32解码一下。

得到的这串基本上就是base64了。

再拿去base64解码一下。

select * from user where username = '$name'

一句sql语句,根据输入的用户名来查询数据库。所以注入点也在用户名的地方,而不是密码。

到这里,看了其他师傅的wp,才知道SQL注入中有一个很重要的知识点

SQL中,在使用union进行查询的时候,

即使你查询的数据不存在,数据库也会创建一个虚拟的数据放在数据库中

意思就是即使查询的密码是不存在的,数据库也会创建一个虚拟的数据进去。

我们就利用这点来获取FLAG。

我们已经证明数据库中只有三列,所以我们猜测这三列是id,username,password,而且一般在数据库当中,password中的数据都是用md5进行加密的,所以我们只需要去构造我们想要的密码的md5的值。

1'union select 1,'555fn','006f52e9102a8d3be2fe5614f42ba989'#    
​
//这里的密码【'006f52e9102a8d3be2fe5614f42ba989'】是168在md5加密后十六进制下的字符串,【#】是用来阻断后方代码执行的,相当于【//】

密码的地方就写168就可以了。

但是我写用户名为’555fn‘是得不到flag的。

只有写成’admin‘才可以。不是很理解为什么。

所以最后的payload是:

//对应BP终端抓包内容
​
name=1'union select 1,'admin','006f52e9102a8d3be2fe5614f42ba989'#&pw=168
用户名为555fn时候回显为【wrong user!】
用户名为admin时候才回显flag。

标签:password,..,回显,题解,flag,过滤,靶场,php,NSSCTF
From: https://blog.csdn.net/weixin_73860677/article/details/140965144

相关文章

  • 【vulhub靶场之rsync关】
    一、使用nmap模块查看该ip地址有没有Rsync未授权访问漏洞nmap-p873--scriptrsync-list-modules加IP地址查看到是有漏洞的模块的二、使用rsync命令连接并读取文件查看src目录里面的信息。三、对系统中的敏感文件进行下载——/etc/passwd执行命令:rsyncrsync:/......
  • 题解:CF257C View Angle
    题目传送门题意平面上有\(n\)个点。从原点引出两条射线,将平面分成两个部分,使其中一个部分覆盖所有的点。求这个部分与原点所夹的角的最小度数。思路既然一个部分覆盖了所有的点,那么另一个部分就一个点都没覆盖,那么要让这个部分最优,这两条射线一定经过两个中间没有任何点的点......
  • basic_pentesting_2靶场实战【超详细】
    下载链接:https://download.vulnhub.com/basicpentesting/basic_pentesting_2.tar.gz一、靶场配置网卡配置为nat二、主机探测与端口扫描nmap192.168.121.0/24 开放了22、80、31337端口nmap192.168.121.188-p--A-sV-Pn 访问80web服务 提示跟随白色兔子f12......
  • 【题解】暑假集训CSP提高模拟14
    目录Rank&挂分A.BA题目内容部分分10pts10+20pts正解思路代码B.BB题目内容部分分5pts正解思路代码C.BCD.BDRank&挂分T4暴搜后来改了记搜,不知道哪里锅了,挂5pts。A.BA题目内容现在有\(m\)块烙板,\(n\)张饼,第\(i\)张饼需要烙\(a_i\)个单位时间,一张饼一个单位时刻只能......
  • 2024MX-MF-DAY1-text题解
    T1【题目描述】有\(n\)个人按编号从\(1\)到\(n\)坐成一圈,即第\(i\in[1,n]\)个人右边是\(i+1\),第\(n\)个人右边的人是\(1\)。初始,每个人手上有\(m\)个球。随后,\(n\)个人按编号从小到大的顺序依次执行如下操作:把自己手中的球分成数量相同且尽可能多的三份,......
  • AkSoundSeedAir.dll修复指南:游戏音频问题解决与预防技巧
    AkSoundSeedAir.dll是一个与声音引擎相关的动态链接库(DynamicLinkLibrary,简称DLL)文件,尤其与Wwise(AudiokineticWwise)声音设计和游戏音效中间件有关。Wwise是一个广泛应用于游戏开发的声音引擎,用于处理游戏中的音频和音效,AkSoundSeedAir.dll就是Wwise的一部分,用于实现声音处理......
  • 花园改造 题解
    题目id:9989题目描述小\(X\)开始改造她的环形的花园了,具体来说她要在花园的环上种满\(n\)棵树。她现在有\(3\)种树:种子、小树苗和大树。每个位置上种不同的树会产生不同的满意度,具体来说在第\(i\)个位置,种种子会产生\(a_i\)的满意度,种小树苗会产生\(b_i\)的满意度,种大树会产生\(c......
  • [AGC005B] Minimum Sum 题解
    题目传送门看到这道题很多人用单调栈,其实用笛卡尔树本质差不多,但是思维难度更小。不知道笛卡尔树的同学可以看这里简单说来,笛卡尔树的一个子树可以代表一个区间,且左子树上点的下标小于根节点,右子树上点的坐标大于根节点。这道题要求所有子区间的\(\texttt{min}\)值之和,其实......
  • 迟钝的舞会 题解
    题目id:1329题目描述牛是公认的笨拙的舞者。然后,约翰发现富有音乐细胞的母牛能产更多的奶。因此,他把他的整圈的牛都拉进了舞蹈培训班,包括所有的公牛(因为跳舞的时候得一男一女-_-)。这些牛正好有\(n\)头是公的,有\(n\)头是母的。在第一堂课开始之前,舞蹈老师想将他们分成一对一对的(......
  • 08-04 题解
    08-03题解A根据题目的提示,发现所有数的积是不变的(\(gcd(a,b)*lcm(a,b)=a*b\)),所以差大和大简易证明设\(g=gcd(a,b)\),则\(a=a'g,\)\(b=b'g\),\(lcm(a,b)=a'b'g\)\(gcd(a,b)+lcm(a,b)=g(1+a'b')\)\(a+b=g(a'......