0
点赞
收藏
分享

微信扫一扫

如何使用PHP进行数据库连接和操作?

萍儿的小确幸 2024-04-26 阅读 8
tornado

目录

[ACTF2020 新生赛]BackupFile 1

1.打开页面,叫我们去找源文件

2.想到用disearch扫描,发现源文件index.php.bak

3.访问这个文件,下载一个文件,用记事本打开

4.翻译php代码

5.构造payload url+/?key=123,得到flag

[极客大挑战 2019]BuyFlag 1

1.进入PAYFLAG,提示我们如果想要买到flag,你必须是一个来自CUIT的学生而且你必须答出正确的密码

2.先查看源代码,发现一串代码,翻译这串代码。 

3.看到指定的名字,会不由的想到用抓包,来修改cookie,将user的0改为1,对名字进行了绕过,然后它提示要输入password

4.输入password,并对is_numeric()函数进行绕过,绕过成功之后,需要支付买flag的钱

5.输入所需的钱,提示说长度太长,想到strcmp()函数漏洞

6.绕过所有函数之后,得到flag

[护网杯 2018]easy_tornado 1

1.通过观察三个文件的内容

2.cookie_secret在welcome.txt中有提示

3.进行初次尝试,构造payload:url+/file?filename=/fllllllllllllag&filehash={{1}}。

 4.构造payload:error?msg={{handler.settings}},找到cookie_secret

5.用python脚本跑一下,得到flag


[ACTF2020 新生赛]BackupFile 1

1.打开页面,叫我们去找源文件

2.想到用disearch扫描,发现源文件index.php.bak

3.访问这个文件,下载一个文件,用记事本打开

4.翻译php代码,并在网站进行操作,对代码翻译后,大致操作就是传一个"key",它必须是数字而且是整数,如果它等于定义的字符串$str,就会输出flag

翻译代码为:
<?php
include_once "flag.php"; //这一行使用 include_once 函数来包含(或插入)另一个 PHP 文件 "flag.php" 的内容。include_once 确保文件只被包含一次,即使它在多个地方被调用。这意味着 "flag.php" 文件中定义的任何变量或函数都将在当前文件中可用。

if(isset($_GET['key']))  //这一行检查 GET 请求中是否存在名为 'key' 的参数。$_GET 是一个 PHP 超全局变量,用于收集表单数据(HTML 表单)在 URL(地址栏)中发送的变量。isset() 函数检查变量是否设置且不为 NULL。
{
    $key = $_GET['key'];  //如果 'key' 参数存在,这行代码将其值赋给 $key 变量。
    if(!is_numeric($key)) 
    {
        exit("Just num!");  //这两行代码检查 $key 是否为数字。如果不是数字,is_numeric() 函 
                    数返回 false,然后 exit("Just num!") 将终止脚本执行并输出 "Just num!"。
    }
    $key = intval($key);   //这行代码使用 intval() 函数将 $key 转换为整数。如果 $key 是数字 
                             或数字字符串,intval() 将返回该数字的整数形式。
    $str = "123ffwsfwefwf24r2f32ir23jrw923rskfjwtsw54w3";  //这行代码定义了一个字符串 
                                                            $str,它包含数字和字符的组合。
    if($key == $str) 
    {
        echo $flag;  //这两行代码检查 $key 是否等于 $str。如果相等,它将输出 $flag 的值。由 
                      于 $str 是一个包含非数字字符的字符串,这意味着只有在 $key 也是一个包含 
                      相同字符的字符串时,这个条件才会为真。
    }
}
else 
{
    echo "Try to find out source file!";   //如果 GET 请求中没有 'key' 参数,这个 else 块将 
                                             执行,输出 "Try to find out source file!"。
}

5.构造payload url+/?key=123,得到flag

[极客大挑战 2019]BuyFlag 1

1.进入PAYFLAG,提示我们如果想要买到flag,你必须是一个来自CUIT的学生而且你必须答出正确的密码

2.先查看源代码,发现一串代码,翻译这串代码。 

3.看到指定的名字,会不由的想到用抓包,来修改cookie,将user的0改为1,对名字进行了绕过,然后它提示要输入password

注意:抓包是抓hackbar,post传参之后的包,不然没有回显的结果

4.输入password,并对is_numeric()函数进行绕过,绕过成功之后,需要支付买flag的钱

5.输入所需的钱,提示说长度太长,想到strcmp()函数漏洞

6.绕过所有函数之后,得到flag

[护网杯 2018]easy_tornado 1

1.通过观察三个文件的内容,可以得到三个页面都有filename和filehash这两个参数,flag在ffllllllllllllag中,推测这里flag应该是在filename=/ffllllllllllllag&filehash=md5(cookie_secret+md5(filename))中

2.cookie_secret在welcome.txt中有提示,render()函数进行服务器端渲染,render()是tornado里的函数,可以生成html模板。是一个渲染函数 ,就是一个公式,能输出前端页面的公式。

函数template与render函数的对比: 

3.进行初次尝试,构造payload:url+/file?filename=/fllllllllllllag&filehash={{1}},由welcome.txt的render也能得知,render是python的一个渲染函数,服务端在响应 http 请求的时候,去向模板中渲染数据,可以把视图响应给客户端,验证了SSTI的猜测。

 4.构造payload:error?msg={{handler.settings}},找到cookie_secret

 5.用python脚本跑一下,得到flag

举报

相关推荐

0 条评论