web题目常见思路

不废话,本文借鉴了CSDN博主recover517的思路,并融合了个人的一部分经验,算是一篇对于自己前期web做题技巧的总结

一、普通思路

  1. 拿到题目首先查看源代码,在源代码中特别注意js或者css文件中是否透露着某些信息

  2. 查看meta标签,如type为author的,这个标签表示作者,后面很有可能会用到这些信息

  3. 查看根目录下是否有robots.txt,建议任何网站,开始做题的时候都先扔到dirb中进行路径爆破

  4. 注意审题,题目中往往会透露一些关键信息,例如:网站备份,诸如此类,那么建议根据路径搜索相关的www.zip或xxx.bak等备份文件

  5. 用户认证伪造,注意查看网络数据包,可以通过修改cookie,或者爆破jwt的方式伪造认证

  6. ip伪造,通常用于页面需要本地或指定ip访问的题目,利用X-Forwarded-For、X-Client-IP、X-Real-IP、CDN-Src-IPhead头,来伪造访问客户端的ip,前提是服务端利用这两个参数进行用户验证

  7. git泄露,网站下存在.git且可以访问,用GitHack工具,还原代码,查看漏洞

  8. vim交换文件泄露.xxx.swp

二、注入思路

  1. 时刻注意项目中是否有可提交的输入框,后者页面参数为id=1,诸如此类,建议尝试sql注入,sql注入有很多分类,简单的可以使用sqlmap做基础探测,如果一直半会儿试不出来可以先寻找其他突破口。

  2. sql注入先使用错误的参数进行页面报错判断,因为有时候也有可能是作为文件包含的参数。

  3. 使用'或者"进行sql探测,使用--+或#(注意转换成%23,因为#在url中代表hash),如果有报错是最好的。

  4. 使用一些固定的payload进行尝试,例如:and 1=2,and 1='1或者其他复杂的payload

  5. 报错函数进行注入(以下列举的函数供函数名过滤时尝试使用),如:

     extractvalue 函数:
       `?id=1" and extractvalue('~', concat(',', (select f4ag from f1ag limit 2,1)))%23`
    
     floor 函数:
       `select * from test where id=1 and (select 1 from( select count(*),concat(user(), floor(rand(0)*2))x from information_schema.tables group by x)a);`
    
     geometrycollection | multipoint | polygon | multipolygon | linestring | multilinestring 函数:
       `select * from test where id=1 and geometrycollection((select * from(select * from (select user())a)b));`
    
     exp 函数:
       `select * from test where id=1 and exp(~(select * from (select version())a));`
    
  6. 服务端往往会进行字符串过滤,这时候要根据一定的信息去猜测服务端可能存在的过滤方法,然后筛选出可能可以使用的注入方法,可能存在的情况有:字符串空替换,小写关键字判断,那么关键字就可以写成这样:selselectect, sElEct

  7. 超长字符截断,例如: 题目需要你以admin账号登录,但是系统中已经存在admin账号,此时,你注册一个类似admin空格*n 1的账号,利用mysql的截断,成功注册用户名为admin 的账号

  8. 使用16进制注入,MySQL中会将16进制自动解析成字符串,同时,16进制也可以用于绕过is_numeric。

  9. 宽字节注入,一般遇到addslashes函数来过滤'和"时,可能会出现宽字节注入,使用%df来与转义引号的\进行合并,从而达到闭合输入的目的。

  10. group by rollup语法,试关键字段出现一个null的结果,配合limit获取null值,最后通过与null比较,绕过逻辑判断。

posted @ 2025-12-09 08:11  AiryShatti  阅读(13)  评论(0)    收藏  举报