南邮CG-CTF—Web writeup第二部分

南邮CG-CTF—Web writeup第二部分

    • 伪装者
    • Header
    • 上传绕过
    • SQL注入1
    • pass check
    • 起名字真难
    • 密码重置
    • php 反序列化
    • SQL Injection
    • 综合题
    • system
    • SQL注入2
    • 综合题2
    • 密码重制2
    • file_get_contents
    • 变量覆盖
      • 知识点;变量覆盖
    • 注意!!
    • HateIT
    • Anonymous

南邮CG-CTF链接

伪装者

Web 20pt
这是一个到处都有着伪装的世界

题目地址
南邮CG-CTF—Web writeup第二部分_第1张图片
进入网页后,提示“只能在本地登陆”,在HTTP请求头中添加本地地址client-ip:127.0.0.1
Google Chrome插件ModHeader
client-ip
刷新页面后得到flag
南邮CG-CTF—Web writeup第二部分_第2张图片
HTTP Referer是header的一部分,当浏览器向web服务器发送请求的时候,一般会带上Referer,告诉服务器该网页是从哪个页面链接过来的,服务器因此可以获得一些信息用于处理。
HTTP_CLIENT_IP 是代理服务器发送的HTTP头。

Header

Web 20pt
头啊!!头啊!!!

题目地址
南邮CG-CTF—Web writeup第二部分_第3张图片
题目暂时无法访问。

上传绕过

SQL注入1

Web 30pt
听说你也会注入?

题目链接
南邮CG-CTF—Web writeup第二部分_第4张图片
进入页面后,用户名和密码已给出,提交后显示:You are not admin!,点击Source可以看到网页源码:

//省略部分HTML代码

if ($_POST[user] && $_POST[pass]) {
    //省略部分源码
    $pass = md5(trim($_POST[pass]));
    $sql = "select user from ctf where (user='" . $user . "') and (pw='" . $pass . "')";
    echo '
'
. $sql; $query = mysql_fetch_array(mysql_query($sql)); if ($query[user] == "admin") { echo "

Logged in! flag:********************

"
; } if ($query[user] != "admin") { echo("

You are not admin!

"
); } ?>

分析代码:当用户名(user)为“admin”且密码经过md5加密后判断相同,即为登陆成功。
源代码未经过过滤便从数据库中查询信息,尝试用Google Chrome的插件HackBar构造万能密码绕过密码判断:
南邮CG-CTF—Web writeup第二部分_第5张图片
提交数据后得到flag
南邮CG-CTF—Web writeup第二部分_第6张图片

pass check

Web 30pt
题目地址

//题目源码已经给出

$pass = @$_POST['pass'];
$pass1 =***********;//被隐藏起来的密码
if (isset($pass)) {
    if (@!strcmp($pass, $pass1)) {
        echo "flag:nctf{*}";
    } else {
        echo "the pass is wrong!";
    }
} else {
    echo "please input pass!";
}
?>

分析代码:通过POST方式传入变量pass的值,判断变量pass是否被设置,且pass要与pass1的值相等即输出flag的值。
可以利用strcmp函数的比较漏洞,即比较数组时,即可绕过比较但判断为true
南邮CG-CTF—Web writeup第二部分_第7张图片
Google Chrome插件HackBar中构造传参:pass[]=1,提交数据得到flag。
flag

起名字真难

Web 30pt
题目地址

//题目源码已给出

function noother_says_correct($number)
{
    $one = ord('1');
    $nine = ord('9');
    for ($i = 0; $i < strlen($number); $i++) {
        $digit = ord($number{$i});
        if (($digit >= $one) && ($digit <= $nine)) {
            return false;
        }
    }
    return $number == '54975581388';
}
$flag = '*******';
if (noother_says_correct($_GET['key']))
    echo $flag;
else
    echo 'access denied';
?>

分析代码:需要传入变量key的值,使noother_says_correct函数顺利执行,该函数判断长度小于number的长度,输入的值不能为数字“1-9”,函数执行成功则输出flag
因为函数限制了数字的输入,尝试转换number的编码以绕过函数的限制:
南邮CG-CTF—Web writeup第二部分_第8张图片
number的值转为16进制时(在线进制转换),符号函数的限制,即长度小于number和不允许输入数字“1-9”

http://chinalover.sinaapp.com/web12/index.php?key=0xccccccccc

在地址栏构造GET传参,得到flag.
flag

密码重置

Web 25pt
重置管理员账号:admin 的密码
你在点击忘记密码之后 你的邮箱收到了一封重置密码的邮件

题目地址
南邮CG-CTF—Web writeup第二部分_第9张图片
进入网页后,账号已经给出“ctfuser”,且不能更改,但提示为重置管理员账号密码,从网页源码中修改为“admin”,尝试重置密码后,提示“error”;

http://nctf.nuptzj.cn/web13/index.php?user1=Y3RmdXNlcg==

在地址栏发现Base64编码,在线Base64转码,显示为:ctfuser,将“admin”进行Base64编码,得到YWRtaW4=
南邮CG-CTF—Web writeup第二部分_第10张图片
使用Burp Suite抓包修改数据,修改user1的值修改为YWRtaW4=及账号的user的值修改为admin,发送数据包后,得到flag。
南邮CG-CTF—Web writeup第二部分_第11张图片

php 反序列化

Web 40pt
题目地址


class just4fun
{
    var $enter;
    var $secret;
}
if (isset($_GET['pass'])) {
$pass = $_GET['pass'];

if (get_magic_quotes_gpc()) {
    $pass = stripslashes($pass);
}
$o = unserialize($pass);
if ($o) {
    $o->secret = "*";
    if ($o->secret === $o->enter)
        echo "Congratulation! Here is my secret: " . $o->secret;
    else
        echo "Oh no... You can't fool me";
} else echo "are you trolling?";
?>

题目提示暂时无法做

SQL Injection

综合题

Web 50pt
题目地址
南邮CG-CTF—Web writeup第二部分_第12张图片
打开网页显示为JSFuck编码JSFuck是一种基于JavaScript的编码方式,它只使用六个不同的字符来编写和执行代码。因为是基于JavaScript,所以可以在浏览器F12控制台直接执行:
南邮CG-CTF—Web writeup第二部分_第13张图片
执行后得到1bc29b36f623ba82aaf6724fd3b16718.php,尝试访问该地址,显示:“哈哈哈哈哈哈你上当啦,这里什么都没有,TIP在我脑袋里”,提示TIP在头文件里,查看HTTP请求头文件:
南邮CG-CTF—Web writeup第二部分_第14张图片
发现tip:history of bashBash (GNU Bourne-Again Shell) 是许多Linux发行版的默认Shell,所以提示为历史命令,在Linux中查询命令行历史命令的语法为:vi.bash_hitsory,尝试在地址栏输入此命令:

http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/.bash_history

查询到历史命令:zip -r flagbak.zip ./*,下载flagbak.zip:

http://teamxlc.sinaapp.com/web3/b0b0ad119f425408fc3d45253137d33d/flagbak.zip

解压后的到flag。
flag

system

SQL注入2

综合题2

密码重制2

file_get_contents

变量覆盖

Web 40pt
变量覆盖,代码审计类题目

题目地址

进入网页后为空白,查看网页源码得到提示的注释:


分析代码:可变变量key获取了一个普通变量value的值作为这个可变变量的变量名。使用foreach来遍历数组中的值,再将获取到的数组键名作为变量,数组中的键值作为变量的值。因此就产生了变量覆盖漏洞。

http://chinalover.sinaapp.com/web24/?name=meizijiu233

通过地址栏进行GET传参,变量覆盖便形成了$$key = $name$value = meizijiu233,构成了$name == "meizijiu233",所以得到flag
flag

知识点;变量覆盖

经常导致变量覆盖漏洞场景有:$$使用不当,extract()函数使用不当,parse_str()函数使用不当,import_request_variables()使用不当,开启了全局变量注册等。

注意!!

Web 1pt
再次重申,请不要未经同意便盗用我们的题目,如果有使用的需要,请和我们联系,联系方式已经在notice已经给出. flag{zhaowomen}

强调一下版权问题,未经允许不要盗用题目,flag已经给出。

HateIT

Anonymous

Web 80pt
PHP是最好的语言,不是吗?
// SUCTF 2018,出题人:梅子酒

题目地址
南邮CG-CTF—Web writeup第二部分_第15张图片

你可能感兴趣的:(各CTF平台,Writeup)